创建型模式:
用于系统创建的那些对象的类对系统进行参数化的方法:生成创建对象的类的子类(工厂方法)和对系统进行参数化的方法。前者缺点是仅为了改变产品类就可能需要创建一个新的子类,这种改变可能级联发生。后者更多的依赖于对象的符合,定义一个对象负责明确产品对象的类,并将它作为该系统的参数。(抽象工厂、建造者、原型)
结构型模式:
适配器模式:既是类结构型模式、又是行为结构型模式。
适配器和桥接模式:都给另一个对象提供了一定程度上的间接性,因而有利于系统的灵活性,另外都涉及从自身以外的一个接口向这个对象转发请求。
组合与装饰模式:结构类似,都是基于递归组合来组织可变数目的对象。
装饰与代理模式:都描述了怎样为对象提供一定程度上的间接引用。装饰适用于编译时不能确定对象的全部功能的情况。
行为型模式:
类行为模式:模板方法模式、解释器模式
访问者模式:引入总是被用作参数的对象,对象是一个多态accept方法的参数
命令和备忘录:定义一些可作为令牌进行传递的对象,这些对象将在稍后被调用。执行命令对象是一个多态操作,备忘录只作为一个值传递。
中介者和观察者:互相竞争关系。观察者引入observer和subject对象来分布通信,而中介者对象则封装了其他对象间的通信。
命令、观察者、中介者、职责链:都涉及如何对发送者和接收者解耦。
中介者模式:欲使一个后端数据模型能够被多个前端用户界面连接。
外观模式:为图形用户界面组件定义不同平台的并行类层次结构
桥接模式:适用于类的抽象和其实现之间不希望有一个固定的绑定关系。
生成器模式:当创建复杂对象的算法应该独立于该对象的组成部分及其装配方式时;
当创建复杂对象的算法应该独立于该对象的组成部分及其装配方式时,可用原型模式、抽象工厂模式。