设计模式
- 策略模式(Strategy )
- 观察者模式(Observer )
- 装饰者模式(Decorator )
- 工厂模式(Factory )
- 单例模式(单件模式,Singleton )
- 命令模式(Command)
- 适配器模式(Adapter)
- 外观模式(Facade)
- 模板方法模式(Template Method)
- 迭代器模式(Iterator )
- 组合模式(Composite Pattern)
- 状态模式(State )
- 代理模式(Proxy )
- 复合模式(Compound Pattern)
- ↓较不重要
- 桥接模式(Bridge )
- 生成器模式(Builder )
- 责任链模式(Chain of Responsiblity )
- 蝇量模式(Flyweight )
- 解释器模式(Interpreter )
- 中介者模式(Mediator )
- 备忘录模式(Memento )
- 原型模式(Prototype )
- 访问者模式(Visitor )
- 参考《Head First 设计模式(中文版)》
策略模式(Strategy )
实例对于同一个方法选择
一旦创建实例,不要改变
观察者模式(Observer )
- 被观察者(Observable)
- 观察者(Observer)
- 观察者先知道被观察对象
- 让被观察对象知道自己在观察
- 被观察者有一系列自己的属性和需要通知的观察者集合
- 变化时通知被观察者
- 观察者主动获取数据(当然也可以在通知时带上数据,不过这样比较繁琐)
装饰者模式(Decorator )
- 装饰者和被装饰者继承同样的接口
- 装饰者的一个属性为被装饰者
- 装饰者可以完全替代被装饰者
- 导致装饰链太长,不知到实质到底是谁
工厂模式(Factory )
简单工厂模式(Simple Factory )
工厂方法模式(Factory Method )
抽象工厂模式(Abstract Factory )
单例模式(单件模式,Singleton )
一个类只有一个实例
两种实现方法
- 1个public static get方法,1个private static实例变量,隐藏构造方法
- 调用get方法返回唯一的实例变量,在没有的时候创建
- 类的全部方法全部定义为静态方法
命令模式(Command)
适配器模式(Adapter)
为了适应另一套接口,创造一个新类(内含一个需要被适配的类)
外观模式(Facade)
只暴露出出一部分方法
所有原则都应该在有帮助的时候在遵守
模板方法模式(Template Method)
父类提供 执行流程的方法 和 每个流程的默认方法
子类实现具体方法
迭代器模式(Iterator )
将遍历封装
组合模式(Composite Pattern)
从两个相关的类(如菜单和具体菜品)提取出相关的方法成为父类
而他们最为组件的一种类型
每一项成为组件(组合,叶节点,多个类选一)
最终成为倒树
状态模式(State )
与策略模式有相似
有一个状态机
内部存在多种状态类的实例,并保存当前状态
但状态会随着当前状态的调用而改变(调用一个方法时,会交给当前状态的同名方法)
状态类也有状态机,通过调用状态机的方法改变状态
代理模式(Proxy )
- 远程代理(Remote Proxy)
- 虚拟代理(Virtual Proxy)
- 保护代理(Protection Proxy)
- 防火墙代理(Firewall Proxy)
- 智能应用代理(Smart Reference Proxy)
- 缓存代理(Caching Proxy)
- 同步代理(Synchronization Proxy)
- 复杂隐藏代理(Complexity Hiding Proxy)
- 外观代理(Facade Proxy)
- 写入时复制代理(Copy-On-Write Proxy)
复合模式(Compound Pattern)
MVC(Model-View-Controller,模型-视图-控制器)
- 结合了观察者模式,策略模式,组合模式。
Model 2
↓较不重要
桥接模式(Bridge )
生成器模式(Builder )
责任链模式(Chain of Responsiblity )
蝇量模式(Flyweight )
解释器模式(Interpreter )
中介者模式(Mediator )
备忘录模式(Memento )
原型模式(Prototype )
访问者模式(Visitor )
参考《Head First 设计模式(中文版)》
设计模式(Design Patterns)
- 策略模式(Strategy Pattern)
- 观察者模式(Observer Pattern)
- 装饰者模式(Decorator Pattern)
- 工厂模式(Factory Pattern)
- 简单工厂模式(Simple Factory Pattern)
- 工厂方法模式(Factory Method Pattern)
- 抽象工厂模式(Abstract Factory Pattern)
- 单例模式(单件模式,Singleton Pattern)
- 命令模式(Command Pattern)
- 适配器模式(Adapter Pattern)
- 外观模式(Facade Pattern)
- 模板方法模式(Template Method Pattern)
- 迭代器模式(Iterator Pattern)
- 组合模式(Composite Pattern)
- 状态模式(State Pattern)
- 代理模式(Proxy Pattern)
- 复合模式(Compound Pattern)
- MVC(Model-View-Controller,模型-视图-控制器)
- Model 2
- ↓较不重要
- 桥接模式(Bridge Pattern)
- 生成器模式(Builder Pattern)
- 责任链模式(Chain of Responsiblity Pattern)
- 蝇量模式(Flyweight Pattern)
- 解释器模式(Interpreter Pattern)
- 中介者模式(Mediator Pattern)
- 备忘录模式(Memento Pattern)
- 原型模式(Prototype Pattern)
= 访问者模式(Visitor Pattern)
设计原则
- 封装变化
- 多用组合,少用继承
- 针对接口编程,不针对实现编程
- 为交互对象之间的松耦合设计而努力
- 对扩展开发,对修改关闭
- 依赖抽象,不要依赖具体类
- 只和朋友交谈
- 别找我,我会找你
- 类应该只有一个改变的理由