除了类本身,设计模式更强调多个类/对象之间的关系和交互过程——比接口/类复用的粒度更大
设计模式分类:创建型模式、结构型模式、行为类模式
Adapter模式(适配器模式):
将某个类/接口转换为client期望的其他形式
解决类之间接口不兼容的问题
通过增加一个接口,将已存在的子类封装起来,client面向接口编程,从而隐藏了具体子类
Decorator设计模式(装饰器模式):
为对象增加不同侧面的特性
对每一个特性构造子类,通过委派机制增加到对象上
以递归的方式实现
接口:定义装饰物执行的公共操作
起始对象,在其基础上增加功能(装饰),将通用的方法放到此对象中
Facade模式(外观模式):
客户端需要通过一个简化的接口来访问复杂系统内的功能
提供一个统一的接口来取代一系列小接口调用,相当于对复杂的系统做了一个封装,简化客户端使用
便于客户端学习使用,解耦
Strategy Pattern模式(策略模式):
有多种不同的算法来实现同一个任务,但需要client根据需要同态切换算法,而不是写死在代码里
Template Method模式(模板模式):
做事情的步骤一样,但具体方法不同
共性的步骤在抽象类内公共实现,差异化的步骤在各个子类中实现
Iterator Pattern模式(迭代器模式):
客户端希望遍历被放入容器/集合的一组ADT对象,无需关心容器的具体类型
也就是说,不管对象被放进哪里,都应该提供同样的遍历方式