java 设计模式-模板方法模式

hl.wang

发布于 2019.09.07 17:08 阅读 2506 评论 0

什么是模板方法模式?

 

      模板方法模式,定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。

 

 

 

 

如何使用模板方法模式?

 

首先我们来定义一个模板抽象类

public abstract class CarTemplate {
    public abstract void makeHead();
    public abstract void makeBody();
    public abstract void makeTail();
    public abstract boolean  checkMake();
    public void make(){
        System.out.println("Start make car...");
        makeHead();
        makeBody();
        makeTail();
        if(checkMake()){
            System.out.println("成功");
        }else {
            System.out.println("失败 ");
        }
    }
}

 

然后我们来编写具体实现类

public class Audi extends CarTemplate {
    @Override
    public void makeHead() {
        System.out.println("make Audi head");
    }
    @Override
    public void makeBody() {
        System.out.println("make Audi body");
    }
    @Override
    public void makeTail() {
        System.out.println("make Audi tail");
    }
    @Override
    public boolean checkMake() {
        return true;
    }
}

 

public class BWM extends CarTemplate {
    @Override
    public void makeHead() {
        System.out.println("make BWM head");
    }
    @Override
    public void makeBody() {
        System.out.println("make BWM body");
    }
    @Override
    public void makeTail() {
        System.out.println("make BWM Tail");
    }
    @Override
    public boolean checkMake() {
        return true;
    }
}

 

 

具体的继承类我们已经写好了,下面我们来测试一下吧

 

public class Demo {
    public static void main(String[] args) {
        Audi audi = new Audi();
        audi.make();
        BWM bwm = new BWM();
        bwm.make();
    }
}

 

 

 

 

 

 

总结

 

(1)模板方法模式的优点
    1、模板方法模式通过把不变的行为搬移到父类,去除了子类中的重复  代码。 
    2、子类实现算法的某些细节,有助于算法的扩展。 
    3、通过一个父类调用子类实现的操作,通过子类扩展增加新的行为,符合“开放-封闭原则”。

(2)模板方法模式的缺点
      按照设计习惯,抽象类负责声明最抽象、最一般的事物属性和方法,实现类负责完成具体的事务属性和方法,但是模板方式正好相反,子类执行的结果影响了父类的结果,会增加代码阅读的难度。