适配器
类适配器--实例代码
(1).使用场景是
存在一个已有类型与我们的目标类型较为契合,但已有类型的接口和目标类型不匹配
(2). 思想
定义一个类公有继承接口类,私有继承已有类型.类的接口实现中,可以利用已有类型的功能实现类的接口
对象适配器--代码实例
- 使用场景是
存在一个已有类型与我们的目标类型较为契合
但已有类型的接口和目标类型不匹配
- 思想
定义一个类公有继承接口类
类包含一个已有类型数据成员
接口实现中,可利用已有类型数据成员进行实现
桥接
代码实例
- 适合
两个平行的层次
一个层次为功能的高级抽象层次
一个层次为底层基础功能的不同实现层次
桥接让两个层次分离
组合
代码实例
- 一个常见的模式
利用基础部件和复合部件,实际可以形成对一个多层结构的大的实体的拆分建模
形成了一个多叉树的结构,
树中每个节点皆为共同抽象类的子类.
叶子节点为抽象类的基础子类.
非叶节点为抽象类的复合子类
装饰
代码实例
- 装饰类与被装饰类处于同一类层次结构
通过装饰类为被装饰类以添加额外一层处理,且可进行装饰的嵌套
外观
代码实例
- 上述过程的解释
编译是一件复杂的工作,但通过外观模式,
首先有一个负责编译的外观类,提供简单接口进行编译.
在类的功能实现中,将工作拆分成若干模块,
由类的实现部分对各个模块进行分工,协调,完成一个整体的工作.
带来的好处:
1.客户使用简单
2.各个功能子模块可以独立进化,可以对一个子模块有多个不同实现,
编译流程:
给定输入文件,
一个扫描模块负责对输入文件进行扫描
一个解析模块负责扫描文件建立文件信息多叉树的对象表示
多叉树节点对象自身是一个类层次,反映所有独立解析单元的类别
对多叉树进行编译,在遍历到每个节点时,依据节点和状态信息进行代码生成
- 此模式适合
有一个复杂功能
对功能实现进行模块划分,独立实现不同模块
提供一个外观类给客户使用,外观类负责对各个模块分工协调实现所需功能
享元
代码实例
- 思想是在某一个对象集合中每个对象会被多次重复使用下
为了避免同一对象多次重复创建,减少不必要的创建时间,
可以对这样的对象集合按对象池来管理.
即通过对象工厂提供对象获取接口,
工厂维护一个对象池,对要获取的对象,先在对象池中查找,
找到直接返回.
找不到,创建新对象,加入对象池并返回.
- 适合于对象集合数量可预测情形
代理
代码实例
- 代理
一个类A存储类B对象的指针
在访问类B对象之前,类A可作一些类似权限检查,合法性检测等工作.
类B可保持相对纯净.