模板方法模式是一个使用非常广泛的设计模式,比较简单,它主要是定义一个操作中的算法框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。我们这里以不同的人的每天来举例:
首先定义一个类,类中定义了 起床getUp()、洗漱Washing()、生活方式process()、睡觉sleeping()四个基本的通用方法,由于不同工作的人他的生活方式是不同的,所以我们将其方法定义为抽象方法,oneDay()是我们这里定义的模板方法,人的一天先起床 后洗漱 ,… ,再睡觉,代码如下:
public abstract class OneDaysWorking {
protected String name;
protected void getUp() {
System.out.println(name + "起床");
}
protected void Washing() {
System.out.println(name + "洗漱");
}
public abstract void process();
public void oneDay() {
this.getUp();
this.Washing();
this.process();
this.sleeping();
}
protected void sleeping() {
System.out.println(name + "睡觉");
}
}
我们再定义三种不同的人群,学生、白领、工人:
/**
* 学生类
*/
public class Student extends OneDaysWorking {
public Student(String name) {
this.name = name;
}
public void process() {
System.out.println(name + "上学");
}
}
/**
* 白领类
*/
public class WhiteCollar extends OneDaysWorking{
public WhiteCollar(String name) {
this.name = name;
}
public void process() {
System.out.println(name+"上班");
}
}
/**
* 工人类
*/
public class Worker extends OneDaysWorking {
public Worker(String name) {
this.name = name;
}
public void process() {
System.out.println(name + "做工");
}
}
测试代码如下:
public class TempModelTest {
public static void main(String[] args) {
Student student = new Student("学生");
student.oneDay();
WhiteCollar whiteCollar = new WhiteCollar("白领");
whiteCollar.oneDay();
Worker worker = new Worker("工人");
worker.oneDay();
}
}
输出结果如下:
学生起床
学生洗漱
学生上学
学生睡觉
白领起床
白领洗漱
白领上班
白领睡觉
工人起床
工人洗漱
工人做工
工人睡觉
恭喜你!学会了模板方法模式!喜欢的关注一波啦~~