简单概述每种模式的用法或作用,在做设计时可以快速启发自己。
1、创建型模式
-
抽象工厂 (Abstract Factory)
提供接口创建一组相关对象,这些对象可以共同组成一个“更大”的对象。 -
生成器 (Builder)
封装创建一个复杂对象的细节,但是暴露部分组成元素的“组装”接口,让调用者负责执行。使得调用者可以控制什么时候添加那种元素(或者不添加某元素)。 -
工厂方法 (Factory Method)
子类中实现创建某个对象的方法,基类中负责调用创建的方法,同时也会处理其他业务逻辑。例如:在基类中做数据结构转换,必要配置读取等。 -
原型 (Prototype)
用深拷贝对象的方式,创建新对象。 -
单例 (Singleton)
保证一个类在全局仅可创建一个对象。
2、结构型模式
-
适配器 (Adapter)
对不兼容的接口进行转换 -
桥接 (Bridge)
在两个维度上提供接口:底层X、高层Y,Y给客户使用,X给Y使用
通过动态替换X,产生 X * Y 种效果。 -
组合 (Composite)
基本对象与容器对象实现相同的接口,对外它们的行为一致,在内部可以相互组合形成复杂的层次结构。 -
装饰者 (Decorator)
用对象包对象的方式,扩充对象的功能。二者保证接口一致,输出结果“叠加”。 -
外观 (Facade)
将一个系统对外的接口集中放在一个类中暴露,达到简化使用的效果。
外观类中的接口,通常只是对系统内接口的转发。 -
享元 (Flyweight)
通过共用无状态对象的方式,减少内存消耗。 -
代理 (Proxy)
在访问者与被访问者之间,引入一个中间层。
3、行为型模式
-
责任链 (Chain of Responsibility)
多个对象可以处理同一请求,最终只能被一个处理。将这些对象串连在一起(责任链),逐个尝试处理请求,确认处理后停止向后传递。 -
命令 (Command)
指定一个操作(Command),传递给另一个对象,让它在某时间执行操作。
它就类似一个面向对象版的回调函数。 -
中介者 (Mediator)
将对象间的交互,集中放在一个中介对象里(Mediator),从而解除其他对象间的耦合。
MVC的C就是一个Mediator。 -
备忘录 (Memento)
保存一个对象内部状态到Memo对象,记录在Memo里的状态,只能被状态拥有者读写(依赖语言支持才能实现)。 -
观察者 (Observer)
在一个对象内实现的事件机制,事件触发者是一个明确、固定的对象(Subject) -
状态 (State)
对象提供的操作在不同状态下会采取不同的行为时,将每个状态下的行为拆分出去,集中放在一个状态对象中。由State或Context对象进行状态的切换。 -
策略 (Strategy)
把容易变化的部分拆分到独立的对象中,并用组合的方式,将对象集成到自己身上提供相关的功能。 -
模版方法 (Template Method)
基类定义好整套流程,将一些容易变化的步骤定义成虚方法,由子类进行重写。 -
访问者 (Visitor)
可以给结构固定的对象,添加任意操作的方式。它不限定有明确含义的接口,但是需要原对象有支持Visitor的实现。每个Visitor类实现一个操作,数量任意、功能任意。
网友评论