模板方法模式
概念:通過定義一個算法的骨架,而將算法中的步驟延遲到子類,這樣子類就可以復(fù)寫這些步驟的實現(xiàn)來實現(xiàn)特定的算法.
使用場景
- 多個子類又共有的方法,并且邏輯基本相同(activity生命周期)
- 重要復(fù)雜的算法,可以把核心算法設(shè)計為模板方法.
- 重構(gòu)時,模板方法模式是一個經(jīng)常使用的模式.
頂層接口:
AbstractWork
public abstract class AbstractWork {
protected void getUp() {
System.out.println("起床了");
}
protected abstract void goToWork();
protected abstract void work();
protected abstract void getOffWork();
/**
* TemplateMethod,共同調(diào)用的方法.
*/
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();
}
模板小結(jié)
- 抽象模板
- 具體模板
Android模板方法的運用
- activity和fragment
- AsyncTask