1.『策略模式』 定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。

OO基础:抽象 封装 多态 继承

OO原则:封装变化 多用组合,小用继承   针对接口编程,不针对实现编程。

• 知道OO基础,并不足以让你设计出良好的OO系统。
•  良好的OO设计必须具备可 复 用 、 可 扩 充 、 可 维 护三个特性。
•  模式可以让我们建造出具 有 良 好 O O 设 计 质 量 的 系统。
•  模式被认为是历经验证的OO设计经验。
•  模式不是代码,而是针对 设 计 问 题 的 通 用 解 决 方案 。 你 把 它 们 应 用 到 特 定的应用中。
•  模式不是被发明,而是被发现。. 
• 大多数的模式和原则,都着眼于软件变化的主题。
•  大多数的模式都允许系统 局 部 改 变 独 立 于 其 他 部分。
•  我们常把系统中,会变化的部分抽出来封装。. 
•  模式让开发人员之间有共 享 的 语 言 , 最 大 化 沟 通的价值。

持续更新中。。。。。。

HeadFirst设计模式中的笔记的更多相关文章

  1. 【Head-First设计模式】C#版-学习笔记-开篇及文章目录

    原文地址:[Head-First设计模式]C#版-学习笔记-开篇及文章目录 最近一年断断续续的在看技术书,但是回想看的内容,就忘了书上讲的是什么东西了,为了记住那些看过的东西,最好的办法就是敲代码验证 ...

  2. HeadFirst设计模式读书笔记--目录

    HeadFirst设计模式读书笔记(1)-策略模式(Strategy Pattern) HeadFirst设计模式读书笔记(2)-观察者模式(Observer Pattern) HeadFirst设计 ...

  3. 读 HeadFirst 设计模式

    以往虽也看过相关设计模式的书籍,但能和与HeadFirt设计模式这本书相比不是缺乏严谨性就是缺乏具体应用实例,还有幽默生动以及引人启发的观点. 设计原则 设计原则并不能光靠死记硬背,我们需要通过具体的 ...

  4. Headfirst设计模式的C++实现——策略模式(Strategy)

    前言 最近在学习<Headfirst设计模式>,里面的例子都是Java的.但是我对Java并不熟悉,所以试着用C++来实现书中的例子. 先来看看Duck以及子类 Duck.h #inclu ...

  5. headfirst设计模式(2)—观察者模式

    定义 观察者模式(有时又被称为发布(publish)-订阅(Subscribe)模式,在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知.这通常透过呼叫各观察 ...

  6. headfirst设计模式(9)—模板方法模式

    前言 这一章的模板方法模式,个人感觉它是一个简单,并且实用的设计模式,先说说它的定义: 模板方法模式定义了一个算法的步骤,并允许子类别为一个或多个步骤提供其实践方式.让子类别在不改变算法架构的情况下, ...

  7. headfirst设计模式(5)—工厂模式体系分析及抽象工厂模式

    先编一个这么久不写的理由 上周我终于鼓起勇气翻开了headfirst设计模式这本书,看看自己下一个设计模式要写个啥,然后,我终于知道我为啥这么久都没写设计模式了,headfirst的这个抽象工厂模式, ...

  8. headfirst设计模式swift版01

    headfirst设计模式这本书真好,准备用一个月学完.书里讲得很清楚了. 设计原则: 1.找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起. 2.针对接口编程,而不是针 ...

  9. 【HeadFirst设计模式——开篇】

    近期在看HeadFirst,接下来的一段时间会陆续更新有关HeadFirst设计模式相关的文章.记得非常久之前在学习大话设计模式的时候,仅仅是走马观花的大致走过一遍.至于里面非常多东西都掌握的不是非常 ...

随机推荐

  1. Python函数 __import__()

    功能: __import__() 函数用于动态加载类和函数 .返回元组列表. 如果一个模块经常变化就可以使用 __import__() 来动态载入. __import__ 语法: __import__ ...

  2. Ubuntu下部署GitLab-——基于14.04系统

    搭建GitLab的目的: 方便公司开发管理代码 GitLab实现的功能: 1.关闭了gitlab的注册功能 2.修改了默认端口 3.汉化 0.前期准备 # 环境 Ubuntu 14.04 root@i ...

  3. check: 获得所有呗选中的checked标签的元素值 mapArrayElement(arrEles)

    首先引用: <script src="../js/myjs/mapArrayElement.js"></script> 然后在<javascript& ...

  4. java代码输入流篇2

    总结: 方法.和之前的有不同,但是名字太长了+++++ package com.aini; import java.io.*; public class ghd { public static voi ...

  5. Rails:Rails使用sqlite3数据库 及数据操作基本命令

    Rails默认使用sqlite3做为数据库,虽然很多人更喜欢mysql.但如果是学习用,sqlite3够了,因为它轻量,不需要安装. 首先对sqlite3做个简短的介绍:1.sqlite3不需要配置, ...

  6. VMware安装操作系统(Operating System not found一个错误原因)

    因为指定的IOS文件是多种操作系统的组合,如Win7(32位和64位完全版),那么安装的时候选择一个操作系统类型和ios文件的类型就匹配不上,所以出现这种错误.

  7. 执行: python manage.py makemigrations报AttributeError: 'str' object has no attribute 'decode'

    找到错误代码(line146):query = query.encode(errors='replace') 解决方法:把decode改为encode即可.

  8. HDLM命令dlnkmgr详解之一__命令格式

    dlnkmgr命令格式 dlnkmgr operation [parameter [parameter-value]] dlnkmgr - The command name. operation - ...

  9. Spring配置hibernate读取实体类映射mappingResources,annotatedClasses,packagesToScan

    转自:https://blog.csdn.net/chendc201/article/details/16886545 这两个是有本质区别的,光看名字也能看出来 mappingResources用于指 ...

  10. 【Android 多媒体应用】使用 MediaPlayer 播放视频

    1.MainActivity.java import android.media.AudioManager; import android.media.MediaPlayer; import andr ...