目录
相关文章:
template 美 [ˈtemplət] 模板方法模式;模板方法;样版;属性;板型
temporary 美 [ˈtempəreri] 短暂的;暂时的;临时的
一、详解
1、概念
定义一个操作中的算法框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤。
- 模板方法模式属于行为型模式。
- 模板方法模式主要是用来定义一套流程下来的固定步骤,而具体的步骤实现则可以是不固定的。
2、使用场景
- a、多个子类有公有的方法,并且逻辑基本相同时
- b、重要、复杂的算法,可以把核心算法设计为模板方法
- c、重构时,模板方法模式是一个经常使用的模式
3、UML结构图分析
4、实际代码分析
/**
* 抽象方法基类
*/
public abstract class AbstractWork {
protected void getUp(){
System.out.println("起床啦!");
}
protected abstract void goToWork();
protected abstract void work();
protected abstract void getOffWork();
/**
* Template Method 大家都拥有共同的执行步骤
*/
public final void newDay(){
getUp();
goToWork();
work();
getOffWork();
}
}
public class BossWork extends AbstractWork {
@Override
protected void goToWork() {
System.out.println("老板开车去上班");
}
@Override
protected void work() {
System.out.println("老板分配工作给员工");
}
@Override
protected void getOffWork() {
System.out.println("老板开车下班");
}
}
public class StaffWork extends AbstractWork {
@Override
protected void goToWork() {
System.out.println("员工坐地特去上班");
}
@Override
protected void work() {
System.out.println("员工开始工作");
}
@Override
protected void getOffWork() {
System.out.println("员工坐地特下班");
}
}
public class Client {
public static void main(String[] args) {
BossWork bossWork = new BossWork();
bossWork.newDay();
System.out.println("===========================");
StaffWork staffWork = new StaffWork();
staffWork.newDay();
}
}
5、优点
二、在Android中的实际运用
1、activity的声明周期方法:onCreate、onStart、onResume
2、AsyncTask