模板设计模式
概念:定义一个算法中的算法骨架,而将一些步骤延伸到子类中去,使得子类可以不改变一个算法的结构,即可重新定义该算法的某些特定步骤。这里需要复用的是算法的结构,也就是步骤,而步骤的实现可以在子类中完成。
使用场合:
1.一次性实现一个算法的不变部分,并且将可变的行为留给子类来完成。
2.各子类公共的行为应该被提取出来并集中到一个公共父类中以避免代码的 重复。首先 识别现有代码的不同之处,并且把不同部分分离为新的操作,最 后,用一个调用这些新 的操作的模板方法来替代这些不同的代码
3.控制子类的扩展
模板方法模式的组成:
--父类角色:提供模板
--子类角色:为模板提供实现
举例:
Template抽象类中有一个show()方法,show方法中调用内部方法顺序为fun1、fun2、 fun3
Children1继承抽象类,并提供fun1、fun2、fun3的实现,但是不需要重写show()方法
备注:模板方法的模板类只能使用抽象类不能使用接口,否则无法定义算法骨架。