读完 GOF 的Design Patterns: Elements of Reusable Object-Oriented Software和图文并茂的Head First Design Patterns,一时并不是那么快消化和理解,所以试着用自己的语言总结一下。
《Design Patterns》在 Introduction 章中”如何选一种模式设计”一节中给出了一张表格,5 个创建模式(Abstract Factory; Builder; Factory Method; Prototype; Singleton),7 个结构模式(Adapter; Bridge; Compose; Decorator; Facade; Flyweight; Proxy)和 11 个行为模式(Chain of Responsibility; Command; Interpreter; Iterator; Mediator; Memento; Observer; State; Strategy; Template Method; Visitor)。
设计模式提倡:
- 面向接口编程而不是实现;
- 使用组合优于继承;
- 程序模块低耦合,高内聚
- 独立出变化部分,适应后期变化
设计模式并不是只局限 OO 中,主要理解设计模式的思想,但它也引入了一定的复杂度,不要烂用设计模式,宗旨是写简单而清晰的代码。
The best way to learn to write simple code is to write simple code! Patterns, like all forms of compexity, should be avoided until they are absolutely necessary. That’s the first thing beginners need to learn. Not the last thing.1
所有例子的代码在这里。
- 浅谈设计模式一: 策略模式(Strategy)
- 浅谈设计模式二: 观察者模式(Observer)
- 浅谈设计模式三: 装饰器模式(Decorator)
- 浅谈设计模式四: 工厂模式(Factory Method)
- 浅谈设计模式五: 抽象工厂模式(Abstract Factory)
- 浅谈设计模式六: 单例模式(Singleton)
- 浅谈设计模式七: 命令模式(Command)
- 浅谈设计模式八: 适配器模式(Adapter)
- 浅谈设计模式九: 外观模式(Facade)
- 浅谈设计模式十: 模板方法模式(Template Method)
- 浅谈设计模式十一: 迭代器模式(Iterator)
- 浅谈设计模式十二: 组合模式(Composite)
- 浅谈设计模式十三:状态模式(State)
- 浅谈设计模式十四: 代理模式(Proxy)
- 浅谈设计模式十五: 生成器模式(Builder)
- 浅谈设计模式十六: 原型模式(Prototype)
- 浅谈设计模式十七: 桥接模式(Bridge)
- 浅谈设计模式十八: 享元模式(Flyweight)
- 浅谈设计模式十九: 责任链模式(Chain of Responsibility)
- 浅谈设计模式二十: 解释器模式(Interpreter)
- 浅谈设计模式二十一: 中介者模式(Mediator)
- 浅谈设计模式二十二: 备忘录模式(Memento)
- 浅谈设计模式二十三: 访问者模式(Visitor)
- 浅谈设计模式附录一: 标识
- 设计模式基本原则