组件协作模式
“组件协作”模式通过晚期绑定来实现框架与应用程序之间的松耦合,是二者协作时常用的模式。
Template Method(模板方法模式)
定义一个骨架(稳定),而将一些特定步骤**延迟(变化)到子类,Template Method使得子类可以不改变(复用)一个算法的结构即可重定义(Override重写)**某些特定步骤。
总结:
- 将“早绑定”转化为了“晚绑定”
- 直观的看其实就是 “虚函数的多态使用”
注意:在有类的继承中时,应该尽可能的将析构函数写成虚函数样式,这样是为了避免析构掉不合适的类。
Strategy(策略模式)
定义一系列算法,把他们一个个封装起来,并且使它们可以相互替换(变化)。该模式使得算法可以独立于使用它们的客户程序(稳定)而变化(扩展,子类化)。
总结:
- 当 strategy 对象没有实例变量,可以让上下文共同使用同一个 Strategy 对象,以节省开销;
- 提供了替换条件判断语句的一种模式,即当需要大幅使用 if-else、switch-case 时可以考虑使用策略模式。
Observe(观察者模式)
定义:当一个对象发生变化时,其他依赖对象做出对应反应(收到通知)。
使用:定义一个观察者基类和一个被观察者基类,同时定义多个派生类去继承它们。使目标发送通知时,无需指定观察者,通知自可自动发送(传播)。