设计模式总结(二)
Bridge 桥模式
动机
由于某些类型的固有的实现逻辑,使得他们具有两个变化的维度,乃至多个维度的变化。
定义
将抽象部分(业务功能)与实现部分(平台实现)分离,使他们都可以独立的变化。
类图
非桥模式
桥模式:通过组合方式解耦业务功能和实现
Abstract Factory 抽象工厂模式
动机
在软件系统中,经常面临“一系列相互依赖的对象”的创建工作,同时由于需求的变化,往往存在更多系列对象的创建工作。
定义
提供一个接口,让该接口负责一系列“相关或者相互依赖的对象”,无需指定他们具体的类。
类图
Prototype 原型模式
动机
在软件系统中,经常面临“某些结构复杂的对象”的创建工作,由于需求的变化,这些对象经常面临着剧烈的变化,但是他们却拥有比较一致的接口。
定义
使用原型实列指定创建对象的种类,然后通过拷贝这些原型来创建新的对象。
类图
Singleton 单列模式
动机
在软件系统中,经常有这样一些特殊的类,必须保证他们在系统中只存在一个实例,才能确保它们的逻辑正确性,以及良好的效率。
定义
保证一个类仅有一个实例,并提供一个该实例的全局访问点。
类图
Proxy 代理模式
动机
在面向对象系统中,有些对象由于某种原因直接访问会给使用者、或者系统结构带来很多麻烦。
定义
为其他对象提供一种以代理控制对这个对象的访问。
类图
Adapter 适配器模式
动机
在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足的。
定义
将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
类图
State 状态模式
动机
在软件构建过程中,某些对象的状态如果发生改变,其行为也会随之而发生变化。
定义
允许一个对象在其内部状态改变时改变它的行为,从而使对象看起来似乎修改了其行为。
类图
Composite 模式
动机
在某些情况下,客户代码过多地依赖于对象容器复杂的内部实现结构,对象容器内部的实现结构的变化将引起客户代码的频繁变化,带来了代码的维护性、扩展性等弊端。
定义
将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。
类图
Command 命令模式
动机、
在软件构建过程中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合-比如需要对行为进行“记录、撤销、事务”等处理,这种无法抵御变化的紧耦合是不合适的。
定义
将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。
类图