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