设计模式——模板方法模式

模板方法的作用在于套用同一个模板填写不同的内容。

这个时候要避免修好改原有内容,同时又要最少代码。

最好的方法是父类保持不能改动的方法中使用可重写方法。

最好的情况下是用抽象类,迫使子类必须填写父类类的抽象方法。我就不这么讲究了。我经验上看,这些适合协议类的用途,比如SOAP协议下的报文。

//模板方法调用的答案方法会被子类重写
public class Temple {
    public void Question1(){
        System.out.println("这是问题1");
        Answer1();
    }    
    public void Question2(){
        System.out.println("这是问题2");
        Answer2();
    }    
    public void Question3(){
        System.out.println("这是问题3");
        Answer3();
    }
    public void Answer1(){
        System.out.println("这是答案1");
    }
    public void Answer2(){
        System.out.println("这是答案2");
    }
    public void Answer3(){
        System.out.println("这是答案3");
    }
}

学生类1重写答案

public class Student1 extends Temple {
    public void Answer1(){
        System.out.println("这是Student1答案1");
    }
    public void Answer2(){
        System.out.println("这是Student1答案2");
    }
    public void Answer3(){
        System.out.println("这是Student1答案3");
    }
}

学生类2重写答案

public class Student2 extends Temple {
    public void Answer1(){
        System.out.println("这是Student2答案1");
    }
    public void Answer2(){
        System.out.println("这是Student2答案2");
    }
    public void Answer3(){
        System.out.println("这是Student2答案3");
    }
    

}

调用方法主线程

public class A {
    public static void main(String[] args) {
        Temple s1=new Student1();
        Temple s2=new Student2();
        s1.Question1();
        s1.Question2();
        s1.Question3();
        s2.Question1();
        s2.Question2();
        s2.Question3();
    }
}

如果做过webService接口的话不妨联想下我这个东西,以后写报文是不是会非常好用。

原文地址:https://www.cnblogs.com/blackdeng/p/9184904.html