Head First 设计模式【笔记】

来源:互联网 发布:知乎是谁创办的 编辑:程序博客网 时间:2024/05/21 20:27

设计原则

  1. 找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。
  2. 针对接口编程,而不是针对实现编程。
  3. 多用组合,少用继承。
  4. 为了交互对象之间的松耦合设计而努力。
  5. 类应该对扩展开放,对修改关闭。
  6. 要依赖抽象,不要依赖具体类。(依赖倒置原则)
  7. 不要让太多的类耦合在一起。(最少知识原则:只和你的密友谈话)
  8. 高层组件对待底层组件的方式是“别调用我们,我们会调用你”。(好莱坞原则)
  9. 一个类应该只有一个引起变化的原因。

设计模式

  1. 策略模式——定义算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
  2. 观察者模式——在对象之间定义一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象都会收到通知,并自动更新。
    观察者模式
  3. 装饰者模式——动态地将责任附加到对象上。想要扩展功能,装饰者提供有别于继承的另一种选择。
    装饰者模式
  4. 工厂方法模式——定义一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。
    工厂方法模式
  5. 抽象工厂模式——提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。
    抽象工厂模式
  6. 单件模式——确保一个类只有一个实例,并提供一个全局访问点。
  7. 命令模式——将“请求”封装成对象,以便使用不同的请求,队列或者日志来参数化其它对象。命令模式也支持可撤销的操作。
    命令模式
  8. 适配器模式——将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。
    适配器模式
  9. 外观模式——提供一个统一的接口,用来访问子系统的一群接口,外观定义了一个高层的接口,让子系统更容易使用。
  10. 模板方法模式——在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。
    模板方法模式
  11. 迭代器模式——提供一种方法顺序访问一个聚合对象中的各个元素,而不是暴露其内部的表示。
    迭代器模式
  12. 组合模式——允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方法处理个别对象以及组合对象。
    组合模式
  13. 状态模式——允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。
    状态模式
  14. 代理模式——为另一个对象提供一个替身或占位符以控制对这个对象的访问。
    代理模式
  15. 复合模式——复合模式结合两个或以上的模式,组成一个解决方案,解决一再发生的一段性问题。

模式分类

  1. 创建型——将对象实例化。提供一个方法,将客户从所需要实例化的对象中解耦。
    Singleton 单件
    Builder 生成器
    Prototype 原型
    Abstract Factory 抽象工厂
    Factory Method 工厂方法
  2. 行为型——类和对象如何交互及分配职责。
    Template Method 模板方法
    Command 命令
    iterator 迭代器
    Observer 观察者
    State 状态
    Strategy 策略
    Mediator 中介者
    Vistior 访问者
    Interpreter 解释器
    Memento 备忘录
    Chain of Responsibility 责任链
  3. 结构型——把类或对象组合到更大的结构中。
    Decorator 装饰者
    Composite 组合
    Proxy 代理
    Facade 外观
    Flyweight 蝇量
    Bridge 桥接
    Adapter 适配器
0 0