模板方法模式
模板方法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 搞事
}
}
客户端
个人想法
模板模式的适用场景是一套固定的流程,但是流程中具体的实现或许会有差异。可以把共同逻辑抽到抽象父类中实现,在子类中实现个性化的代码。