目录
模板方法设计模式的概念及核心内容:
模板方法设计模式在实际开发中是一种使用非常广泛的设计模式,也是一种非常重要的思想。其核心内容为:通过定义一个模板类,在模板类中规定其整体的骨架并确定哪些方法是允许子类去重写,哪些不允许子类重写或者哪些必须子类重写,其目的是保证其核心算法不被破坏。定义完模板类后,写出具体的子类去继承模板类并按规定好的框架来完成子类的定义。
注:在定义模板类中的方法时,需要慎用修饰词:final、abstract。final用来可以用来定义那些不想被子类重写的方法,abstract则可以用来定义那些需要子类去具体实现的方法。
模板方法设计模式的具体例子:
定义一个模板类如下:其实际意义为老师和同学一天里做某些事都有相同的顺序,但是每一件事情又不相同。
public abstract class PeopleInSchool {
public PeopleInSchool() {}
//定义子类不可重写的day()方法
public final void day(){
getup();
eatbreakfast();
inschool();
eatlunch();
classover();
sleep();
}
//定义子类必须重写的抽象方法
public abstract void getup();
public abstract void eatbreakfast();
public abstract void inschool();
public abstract void eatlunch();
public abstract void classover();
public abstract void sleep();
}
学生类:
public class Student extends PeopleInSchool{
@Override
public void getup() {
System.out.println("在早上7点30起床");
}
@Override
public void eatbreakfast() {
System.out.println("在家里吃早饭");
}
@Override
public void inschool() {
System.out.println("在学校学习");
}
@Override
public void eatlunch() {
System.out.println("在食堂吃午饭");
}
@Override
public void classover() {
System.out.println("放学回家做作业");
}
@Override
public void sleep() {
System.out.println("在晚上9点睡觉");
}
}
老师类:
public class Teacher extends PeopleInSchool{
@Override
public void getup() {
System.out.println("在早上6点30起床");
}
@Override
public void eatbreakfast() {
System.out.println("在家里/食堂吃早饭");
}
@Override
public void inschool() {
System.out.println("在学校给同学们上课");
}
@Override
public void eatlunch() {
System.out.println("在食堂/家里吃午饭");
}
@Override
public void classover() {
System.out.println("放学回家批改作业");
}
@Override
public void sleep() {
System.out.println("在晚上12点睡觉");
}
}
总结
模板方法模式是一种重要的设计模式,也代表一种抽象编程的思想。需要在之后的开发中细细去品味。感谢阅读。
版权声明:本文为yames01原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。