结构型模式
adapter(适配器模式)
什么时候使用
将某个类/接口转换为client期望的其他形式
同故宫增加一个接口,将已存在的子类封装起来,client面向接口编程,从而隐藏了具体子类
模型结构
其实它的本质就是使用一个中间的类,将原来的方法隔离,为原来的方法重新定义接口,并提供给client使用
decorator(装饰器模式)
什么时候使用
为对象增加不同侧面的特性
对每一个特性构造子类,通过委派机制增加到对象上
同时使用了子类型和委托机制
模型结构
decorator中有一个rep,用来维护当前的component,你需要用什么的时候,用相应的子类包装一下就可以了,注意component不可能同时拥有这些特性,仅仅是在你需要的时候,动态的获取
facade(外观模式)
客户端需要通过一个简化的接口来访问复杂系统内的功能
将n个操作组合起来,然后呈现给client
行为类模式
策略模式(strategy pattern)
有多种不同的算法来实现同一个任务,但需要client根据需要动态切换算法,而不是写死在代码里
为不同实现设计一个接口,在client使用时进行delegation调用
template method(模板模式)
做事情的步骤一样,但具体方法不同
共性的步骤在抽象类内公共实现,差异化的步骤在各个子类中实现
使用继承和重写实现模板模式
父类中有一个模板方法
iterator(迭代器模式)
client希望遍历被放入容器/集合类的一组ADT对象,无需关心容器的具体类型
不管对象被放进哪里,都应该提供同样的遍历方式
直接实现Java内置iterable和iterator接口