文章借鉴于《设计模式:可复用面向对象软件的基础》
可复用(可重复使用),需求变动,代码变动小。
如何设计可复用面向对象软件:找到相关的对象,以适当的粒度对他们进行归类,再定义类的接口和继承层次,建立对象之间的基本关系。对现有问题由针对性,对将来的问题和需求由足够的通用性。
为什么要学习设计模式,设计模式类似模板,对于特定问题可以使用特定的模式去解决问题,省去的设计的过程和弯路。
怎么学习设计模式,知道这一种设计模式的名称,针对什么问题场景,提供怎样的解决方案,以及效果优劣,知道模式中的各个组成部分怎么相互合作,有哪些坑需要避免,一起与该模式一起狼狈为奸的模式有哪些。
设计模式的使用并不是独立互斥的,一个合格的解决方案应该根据实际需求有多种设计模式,比如简单的MVC应用方案,可能包含有ObServe、Composite、Strategy、Factory Method、Decorator。
设计模式一览:能看到名词说出是什么,怎么用优劣,模块划分及关系,组合形式
创建型--与对象的创建有关(创造)
- Abstract Factory 抽象工厂
- Builder 建造者
- Prototype 原型
- Singleton 单例
结构型--处理类或对象的组合(组合)
- Adapter(对象) 适配器
- Bridge 桥接
- Composite 组合
- Decorator 装饰
- Facade 外观
- FlyWeight 享元
- Proxy 代理
行为型--对类或对象怎么交互和怎样分配职责进行描述(调配)
- Chain of Responsibility 职责链
- Command 命令
- Iterator 迭代器
- Mediator 中介者
- Memento 备忘录
- Observe 观察者
- State 状态
- Strategy 策略
- Visitor 访问者
模式之间的关系