GOF-23 模式分类
从目的来看:创建型(Creational)模式:将对象的部分创建工作延迟到子类或者其他对象,从而应对需求变化为对象创建时具体实现引来的冲击。
结构型(Structural)模式:通过类继承或者对象组合获得更灵活的结构,从而应对需求变化为对象的结构带来的冲击。
行为型(Behavioral)模式:通过类继承或者对象组合来划分类与对象间的职责,从而应对需求变化为多个交互的对象带来的冲击。
从范围来看:- 类模式处理类与子类的静态关系。
- 对象模式处理对象间的动态关系。
从封装变化角度对模式分类
- 组件协作:
Template Method(模板)
Strategy(策略)
Observer/Event(观察者)
- 单一职责:(解决类创建过程中单一职责)
Decorator(装饰者)
Bridge(桥接)
- 对象创建:(解决对象创建过程中的依赖关系)
Factory Method(工厂)
Abstract Factory(抽象工厂)
Prototype(原型)
Builder(建造者)
- 对象性能:
Sigleton(单例)
Flyweight(享元)
- 接口隔离:
Facade(外观)
Proxy(代理)
Mediator(中介)
Adapter(适配器)
- 状态变化:
Memento(备忘录)
State(状态)
- 数据结构:
Composite(组合模式)
Iterator(迭代器)
Chain of Resposibility(责任链)
- 行为变化:
Command(命令)
Visitor(访问者)
- 领域问题:
Interpreter(解释)
重构获得模式 Refactoring to Patterns
面向对象设计模式 是“好的面向对象设计”,所谓“好的面向对象设计”指是哪些可以满足“应对变化,提高复用“的设计。
现代软件设计的特征是“需求的频繁变化”。设计模式的要点是“寻找变化点,然后在变化点处应用设计模式,从而来更好的应对需求的变化”。“什么时候、什么地点应用什么设计模式”比“理解设计模式结构本身"更为重要。
设计模式的应用不宜先入为主,一上来就使用设计模式是对设计模式的最大误用。没有一步到位的设计模式。敏捷软开发实践提倡的“Refactoring to Patterns”是目前普遍公认的使用设计模式的方法。
需求的频繁变化---》寻找变化点---》在变化点处应用设计模式。
什么时候、什么地点用设计模式比理解设计模式更重要
阶段1:没有模式--》阶段2:一上来就是用设计模式---》阶段3:。。。
Refactoring to Patterns 重构与模式
重构----改善既有代码的设计
重构关键技法
- 静态->动态(经典)
- 早绑定->晚绑定
- 继承->组合
- 编译时依赖->运行时依赖
- 紧耦合->松耦合
理解这些技法比理解某移动模式重要的多。
,