/**
* 模块模式
* @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();
}
}