模板模式
在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。子类实现
行为由父类控制,子类实现具体
如:学校规定学生必须要有 【去上学】【听课】【放学回家】这些 行为,但是每个学生去上学的实现方式不一样,有的走路去,有的奔驰接送。有的听课咬笔,有的听课睡觉。
1 | public abstract class Game { |
装饰模式
被装饰类 A 和装饰类 B 都实现接口 component,A 是 B 的成员变量,当使用 component.operation() 是,B 直接调用 A 的 operation 方法,但是会在调用前后执行特定装饰操作,如:
1 | A.operation() >> 我的名字是小花 |
和代理模式的区别
总结两点:
1.代理模式强调的是控制,装饰模式强调的是增强。
2.代理模式强调的是透明访问,装饰模式强调的是自由构建。
桥接模式
为了解决将抽象部分与实现部分分离,让他们都在自己的维度上有多维度地变化
核心的是解决兼容问题,通过接口对不同的实现做约束
一个空调和遥控器例子,为了让不同的空调能够兼容不同的遥控器,分别定义空调和遥控器使用接口,通过调用约束好的接口,任一遥控器就能够打开任意的空调。有点类似于某些协议制定委员会