设计模式(8)——模板方法模式
1. 定义
??? 模板方法模式-在一个方法中定义了一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。
2. 类图及描述
图 模板方法模式类图
3. 应用场景及优缺点
??? 模板方法模式中的方法:
??? 模板方法:定义在AbstractClass中,形成算法的骨架
??? 基本方法:
??? 1. Abstract Method:由子类具体实现,完成具体的算法步骤。
??? 2. Concrete Method:抽象类实现的final方法,子类不能override。
??? 3. Hook Method:提供缺省的实现,子类可以在必要时进行扩展,钩子简化了子类的实现,它可以让子类能够有机会对模板方法中某些即将发生的(或刚刚发生的)步骤做出反应
?
??? 适用性:
??? 1. 一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。
??? 2. 各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。这是Opdyke和Johnson所描述过的“重分解以一般化”的一个很好的例子。首先识别现有代码中的不同之处,并且将不同之处分离为新的操作。最后,用一个调用这些新的操作的模板方法来替换这些不同的代码。
??? 3. 控制子类扩展。模板方法只在特定点调用Hook操作,这样就只允许在这些点进行扩展。
?
?