TemplateMethod(模块方法模式)

时间:2021-07-05 12:27:28
/**
* 模块模式
* @author TMAC-J
* 将一个完整的算法分离,分成不同的模块
* 用于有很多步骤的时候,可能以后这些步骤还会增加,把这些步骤分离
* 将有共性的部分放在抽象类中
* 避免代码重复
* 有利于算法扩展
* 假设这个算法是人,人具有的共性是早上起来穿衣服,吃饭,工作
*/
public class TemplateMethod { abstract class Person{ abstract void dressup(); abstract void eat(); abstract void work(); public void operate(){
dressup();
eat();
work();
} } public class Teacher extends Person{ @Override
void dressup() {
System.out.println("穿衣");
} @Override
void eat() {
System.out.println("吃饭");
} @Override
void work() {
System.out.println("工作");
}
//老师独有的备课环节,扩展了这个步骤
public void prepare(){
System.out.println("备课");
} } public class Student extends Person{ @Override
void dressup() {
System.out.println("穿衣");
} @Override
void eat() {
System.out.println("吃饭");
} @Override
void work() {
System.out.println("工作");
} } public void test(){
Person teather = new Teacher();
teather.operate();
Person student = new Student();
student.operate();
} }