public abstract class AbstractPerson {
//抽象类定义整体流程骨架
public void prepareGotoSchool(){
dressUp();
eatBreakfast();
takeThings();
}
//以下是不同子类根据自身特性完成的具体步骤
protected abstract void dressUp();
protected abstract void eatBreakfast();
protected abstract void takeThings();
}
public class Student extends AbstractPerson {
@Override
protected void dressUp() {
System.out.println("穿校服");
}
@Override
protected void eatBreakfast() {
System.out.println("吃妈妈做好的早饭");
}
@Override
protected void takeThings() {
System.out.println("背书包,带上家庭作业和红领巾");
}
}
public class Teacher extends AbstractPerson {
@Override
protected void dressUp() {
System.out.println("穿工作服");
}
@Override
protected void eatBreakfast() {
System.out.println("做早饭,照顾孩子吃早饭");
}
@Override
protected void takeThings() {
System.out.println("带上昨晚准备的考卷");
}
}/**
* 模板方法模式(Template Method)
*/
public class TemplateMethodActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_template_method);
AbstractPerson student=new Student();
student.prepareGotoSchool();
AbstractPerson teacher=new Teacher();
teacher.prepareGotoSchool();
}
}
github地址:https://github.com/zyj18410105150/DesignMode