操作型模式之Template Method(模板方法)模式
阿新 • • 發佈:2019-02-20
1.如果你期望在一個方法中實現一個演算法,把演算法中的某些步驟的定義推遲到子類中去重新定義,可使用Template Method(模板方法)模式
2.舉例
//演算法框架抽象類
public abstract class AbstractMethod {
abstract void one();
abstract void twe();
void templateMethod(){
switch (hook()) {
case 0:
one();
twe();
break ;
case 1:
one();
break;
case 2:
twe();
break;
default:
break;
}
}
protected int hook(){
return 0;
}
}
//第一個演算法
public class FirstMethod extends AbstractMethod{
@Override
void one() {
// TODO Auto-generated method stub
System.out.println("FirstMethod類 :one() ...");
}
@Override
void twe() {
// TODO Auto-generated method stub
System.out.println("FirstMethod類 :twe() ...");
}
}
//第二個演算法:重寫hook()方法
public class SecondMethod extends AbstractMethod{
@Override
void one() {
// TODO Auto-generated method stub
System.out.println("SecondMethod類 :one() ...");
}
@Override
void twe() {
// TODO Auto-generated method stub
System.out.println("SecondMethod類 :one() ...");
}
@Override
protected int hook() {
// TODO Auto-generated method stub
return 2;
}
}
//測試類
public class Test {
public static void main(String[] args){
FirstMethod firstMethod = new FirstMethod();
SecondMethod secondMethod = new SecondMethod();
firstMethod.templateMethod();
secondMethod.templateMethod();
}
}
//結果
FirstMethod類 :one() ...
FirstMethod類 :twe() ...
SecondMethod類 :one() ...
3.總結:Template Method(模板方法)模式的目的就是在一個方法中實現一個演算法,並將演算法中某些步驟的定義推遲,從而使得其他類可以重新定義這些步驟。該模式通常可以作為開發人員之間的某種約束。一個開發人員提供演算法的框架,另一個開發人員則提供演算法某些步驟的具體實現。這也許是需要演算法實現的步驟,或者是演算法的開發人員在演算法中某一位置設定的鉤子(hook)。
4.參考:http://haolloyin.blog.51cto.com/1177454/333063/