设计模式之模板方法模式
模式定义:模板方法(Template Method)用来定义算法的框架,将算法中可变的步骤定义为抽象方法,交给子类来实现或重写。
使用模板方法的好处
1.避免代码冗余。算法不可变的部分由模板方法定义,所有子类均可复用,可以避免子类重复定义相同的代码
2.提高代码稳定性。算法的可变部分是不稳定的。将不稳定的步骤定义为抽象方法,交给子类去实现。模板方法依赖于抽象方法,能保证算法框架的稳定性
使用场景
1.当算法中含有可变步骤和不可变步骤时,让子类决定可变步骤的实现方式
2.当多个类中含有公共的业务行为,开发人员想要避免重复定义相同的代码
3.想幺控制子类的扩展行为,只允许子类实现特性的扩展点
java代码:
public class TemplateMethod {
public static void main(String[] args) {
Temp temp =new TempImpl();
//调用模板方法
temp.check();
}
}
//模板类
abstract class Temp{
//模板方法
public final void check(){
steps1();
steps2();
steps3();
steps4();
}
//步骤一
private void steps1(){
System.out.println("模板方法步骤一");
}
//步骤二
private void steps2(){
System.out.println("模板方法步骤二");
}
//步骤三(定义为抽象方法,交给子类实现或重写)
protected abstract void steps3();
//步骤四
private void steps4(){
System.out.println("模板方法步骤四");
}
}
//子类实现
class TempImpl extends Temp{
@Override
protected void steps3() {
System.out.println("子类实现的步骤");
}
}
运行结果: