設計模式(七)---- 模板方法模式
阿新 • • 發佈:2018-12-08
基本操作 int draw 鉤子 鉤子方法 重新定義 工廠 一個 temp
模板設計模式
1、簡介
模板模式定義了一個操作中的算法骨架,將某些步驟延遲到子類中實現。這樣,新的子類可以在不改變一個算法結構的前提下重新定義該算法的某些特征步驟。
2、核心
處理某個流程的代碼已經都具備,但是其中某個節點的代碼暫時不能確定。因此,需要我們采用工廠方法模式,將這個節點的代碼實現轉移給子類完成。即,處理步驟父類中定義好,具體實現延遲到子類中定義。
模板類:
public abstract class TemplateMethod
{
public void taskNumber()
{
System.out.println("取號排隊");
}
public abstract void transact(); //辦理業務的方法, 鉤子方法
public void evaluate()
{
System.out.println("反饋評分");
}
//模板方法把基本操作組合到一起, 子類一般不能重寫, 所以使用final
public final void process()
{
this.taskNumber(); //取號排隊
this.transact(); //處理業務, 鉤子方法
this.evaluate(); // 反饋評分
}
}
模板子類,如下:
public class DrawMoney extends TemplateMethod
{
@Override
public void transact()
{
System.out.println("辦理取錢業務");
}
}
測試類,如下
public class Client
{
public static void main(String[] args)
{
TemplateMethod templateMethod1 = new DrawMoney();
templateMethod1.process();
//使用匿名內部類
TemplateMethod templateMethod2 = new TemplateMethod()
{
@Override
public void transact()
{
System.out.println("存錢業務的辦理");
}
};
templateMethod2.process();
}
}
3、什麽時候使用模板方法模式
實現一個算法時,整體步驟很固定,但是,某些部分易變。易變的部分可以抽象出來,供子類實現。
設計模式(七)---- 模板方法模式