模板方法模式
概念:通过定义一个算法的骨架,而将算法中的步骤延迟到子类,这样子类就可以复写这些步骤的实现来实现特定的算法.
使用场景
- 多个子类又共有的方法,并且逻辑基本相同(activity生命周期)
- 重要复杂的算法,可以把核心算法设计为模板方法.
- 重构时,模板方法模式是一个经常使用的模式.
顶层接口:
AbstractWork
public abstract class AbstractWork {
protected void getUp() {
System.out.println("起床了");
}
protected abstract void goToWork();
protected abstract void work();
protected abstract void getOffWork();
/**
* TemplateMethod,共同调用的方法.
*/
public final void newDay() {
getUp();
goToWork();
work();
getOffWork();
}
}
子类一:
public class BossWork extends AbstractWork {
@Override
protected void goToWork() {
System.out.println("boss go to work by car");
}
@Override
protected void work() {
System.out.println("boss work ");
}
@Override
protected void getOffWork() {
System.out.println("boss get off work at 6:00 pm");
}
}
子类二:
public class StaffWork extends AbstractWork {
@Override
protected void goToWork() {
System.out.println("employee go to work by car");
}
@Override
protected void work() {
System.out.println("employee work ");
}
@Override
protected void getOffWork() {
System.out.println("employee get off work at 5:00 pm");
}
}
测试
public static void main(String[] args) {
BossWork bossWork = new BossWork();
StaffWork staffWork = new StaffWork();
bossWork.newDay();
staffWork.newDay();
}
模板小结
- 抽象模板
- 具体模板
Android模板方法的运用
- activity和fragment
- AsyncTask
网友评论