设计模式-模板方法《十八》
2019-01-05 本文已影响13人
liyoucheng2014
何为模板方法
定义:定义一个操作中算法的骨架,而将一些步骤延迟到子类中。模板方法使子类可以重定义算法的某些特定步骤而不改变该算法的结构。
静态关系图如下
模板方法的类图。ConcreteClass重载AbstractClass的primitiveOperation1和PrimitiveOperation2,以在Client调用AbstractClass中的templateMethod时提供独特的操作何时使用模板方法
1、需要一次性实现算法的不变部分,并将可变的行为留给子类来实现。
2、子类的共同行为应该被提取出来放到公共类中,以避免代码重复。现有代码的差别应该被分离为新的操作。然后用一个调用这些操作的模板方法来替换这些不同的代码。
3、需要被控制子类的扩展。可以定义一个在特定点调用“钩子”(hook)操作的模板方法。子类可以通过对钩子操作的实现在这些点扩展功能。
模板方法 | 委托(适配器) |
---|---|
父类定义一个一般算法,但缺少某些特定/可选的信息或算法,它通过这些缺少的信息或算法起到一个算法“食谱”的作用 | 委托(适配器)与预先定义好的委托接口一起定义一个特定算法 |
缺少的信息由子类通过继承来提供 | 特定算法由任何对象通过对象组合来提供 |