设计模式之模板方法模式

模板方法模式

设计模式之模板方法模式_第1张图片
模板方法UML.png
abstract class AbsTemplate{
    protected void stepOne(){
        //步骤一
    }
    protected void stepTwo(){
        //步骤二
    }
    protected void stepThree(){
        //步骤三
    }
    public void run(){
        stepOne();
        stepTwo();
        stepThree();
    }
}

抽象模板,定义三个必要步骤和一个实现事情的功能方法

class TemplateA extends AbsTemplate{
    protected void stepOne(){
        super.stepOne();
        //步骤一
        //添加一些这个实现类想添加的逻辑
    }
    protected void stepTwo(){
        super.stepTwo();
        //步骤二
        //添加一些这个实现类想添加的逻辑
    }
    protected void stepThree(){
        super.stepThree();
        //步骤三
        //添加一些这个实现类想添加的逻辑
    }
}   

实现类A,在实现步骤的具体方法中实现A特有的逻辑

class TemplateB extends AbsTemplate{
    protected void stepOne(){
        super.stepOne();
        //步骤一
        //添加一些这个实现类想添加的逻辑
    }
    protected void stepTwo(){
        super.stepTwo();
        //步骤二
        //添加一些这个实现类想添加的逻辑
    }
    protected void stepThree(){
        super.stepThree();
        //步骤三
        //添加一些这个实现类想添加的逻辑
    }
}   

实现B,在实现步骤的具体方法中实现B特有的逻辑

class Client{
    pblic static void main(String[] args){
        AbsTemplate template = new TemplateA();
        template.run();//A 搞事
        template = new TemplateB();
        template.run();//B 搞事
    }
}

客户端

个人想法

模板模式的适用场景是一套固定的流程,但是流程中具体的实现或许会有差异。可以把共同逻辑抽到抽象父类中实现,在子类中实现个性化的代码。

你可能感兴趣的:(设计模式之模板方法模式)