该系列文章为博主学习笔记,原文请参考参考链接
本文禁止转载,但是欢迎大家留言区留言交流[微笑]
模板模式是一种类继承模式,主要是通过一个抽象类,把子类一些共有的类提取出来(称为基本方法),放到抽象类中,并在抽象类中定义一个模板方法,在模板方法中规定基本方法的执行顺序。将不同的实现细节交给子类去实现。
例如小明和小华每天上学前都要叠好被子,吃早餐,然后去上学,只不过小明是乘坐公交车去上学,而小华是骑自行车上学。在叠被子和吃早餐这两件事情是他们共有的,我们可以提取出来放到父类去实现,而去上学这件事情,出现了偏差,两个人的实现方式不同,所以不能放在父类去实现,应该交给子类去实现。
这里doquilt()和eatfastbreak()分别对应叠被子和吃早饭,因为没有差异,所以我们放在抽象类中,模板方法 templateMethod()分别对这三个方法调用,规定了调用的顺序,而gotoschool()方法因为小明和小华两个人实现不同,所以我们一般定义为抽象的方法,由子类去实现。
代码:
public abstract class GoSchool {
public void templateMethod() {
doquilt();
eatfastbreak();
gotoschool();
}
public void doquilt() {
System.out.println("叠被子");
}
public void eatfastbreak() {
System.out.println("吃早餐");
}
public abstract void gotoschool();
}
public class XiaoHua extends GoSchool {
@Override
public void gotoschool() {
System.out.println("骑自行车");
}
}
public class XiaoMing extends GoSchool {
@Override
public void gotoschool() {
System.out.println("乘坐公交车");
}
}
public class myClass {
public static void main(String[] args){
GoSchool goSchool=new XiaoMing();
goSchool.templateMethod();
}
}
输出:
叠被子
吃早餐
乘坐公交车
通过模板模式,将公共的行为放到父类中去实现,子类实现不同的细节,很大程度上加大了代码的复用,并且子类的更改不会影响到父类,更改和增加新的子类很方便,符合单一职责和开闭原则。
微信公众号:
QQ群:365473065