设计模式学习笔记(编写中)
如何定义一个设计模式
1. 应该何时使用这个模式
2. 模式由哪几部分组成
3. 应用的效果及使用模式应权衡的问题
设计模式分类:
目的为创建类
目的为创建对象
目的为结构型类
目的为结构型对象
目的为行为型类
目的为行为型对象
创建型模式
需要关注:
1. 什么被创建
2. 谁创建它
3. 如何创建
4. 何时创建
1. 抽象工厂Abstract Factory
适用场景举例:一个支持多种形态的产品,为了保证不同形态间的可移植性,一个应用不应该为每个形态进行从无到有的实现(不应该写定所有实现)
实现特征:
抽象工厂作为接口基类,用于创建工厂类
工厂类用于执行创建产品操作
抽象对象作为产品接口积累,用于创建产品类
产品类用于创建具体产品对象
2. 生成器Builder
适用场景举例:TextConvert支持多种文本格式之间的转换,针对转为富文本RTF格式场景,RTFReader调用TextConvert中的具体操作接口,执行具体的转换操作
实现特征:
builder为产品指定的抽象接口,创建具体builder
具体builder用于创建产品
director用于调用builder中的抽象接口
意义:调用者可以复用director,用builder的子类给director传参即可
3. 工厂方法Factory Method
适用场景举例:产品A有多种形态,创建产品A的时候,基于基类根据参数进行多态管理
实现特征:
product定义创建对象的接口
ConcreteProduct实现所有product接口
creator返回product对象
ConcreteCreator重构creator对product的管理函数
4.原型prototype
适用场景举例:乐谱编辑器中,使用Graphic类生成音符和五线谱,tool类用于生成处理音符和五线谱的工具
实现特征:
prototype包含一个clone自身的接口
ConcretePrototype实现clone操作
5. 单例singleton