模板方法模式: 在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。(使用方法把算法定义成一组步骤,让后让子类实现步骤)
hook(钩子): 在超类中默认不做任何事,子类可以视情况决定是不是覆盖他们。
[当子类 '必须' 提供算法中某个方法和步骤的实现时,使用抽象方法。 如果算法的这个部分是可选的,就使用钩子。]
OO 设计原则
好莱坞原则: 别调用(打电话给)我们{高层组件},我们会调用(打电话给)你{低层组件}。(将决策权交给高层模块)
模板很常用,记得学《面向对象》那门课时,举的例子大部分就是模板方法; hook的概念也常听说甚至使用过,如今终于明了; 看看几个设计模式的区别:
- 模板模式 ── 子类决定如何实现算法中的某些步骤;
- 策略 ── 封装可互换的行为,然后使用委托来决定要采用哪一个行为;
- 工厂方法 ── 由子类决定实例化那个具体类;
最新评论