### 模板方法模式
定義一個操作中的算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變一個算法的結構即可重新定義該算法的某些特定步驟。(摘抄)
模板方法模式使一個比較簡單的模式,平時其實編程中肯定用得挺多的,只是不知道叫這個名字罷了,模板方法模式就是把一些固定的行為放到超類中去,去掉這些重復的代碼從而減少代碼量,這樣就提供了一個復用性很好的代碼平臺。
回調中其實就用到了模板方法模式。
舉個生活中很簡單的例子,你要到開門進入房間,那么過程總是先開門,再進入房間。開門的方法有很多種,密碼,聲控,鑰匙等,進入房間的方法也有很多種,走進,跑進,爬進,跳進等。那么這時就可以把開門進入房間這個固定的過程作為一個模板,然后具體的方法具體繼承實現。
~~~
abstract class OpenCome
{
public abstract void open();
public abstract void come();
public void templateMethod()
{
open();
come();
System.out.println("我已進入");
}
}
class KeyOpenWalkCome extends OpenCome
{
@Override
public void open() {
// TODO Auto-generated method stub
System.out.println("鑰匙開門");
}
@Override
public void come() {
// TODO Auto-generated method stub
System.out.println("走入門內");
}
}
class VoiceOpenWalkCome extends OpenCome
{
@Override
public void open() {
// TODO Auto-generated method stub
System.out.println("聲控開門");
}
@Override
public void come() {
// TODO Auto-generated method stub
System.out.println("跑入門內");
}
}
class Client
{
public static void main()
{
OpenCome openCome = new KeyOpenWalkCome();
openCome.templateMethod();
openCome = new VoiceOpenWalkCome();
openCome.templateMethod();
}
}
~~~
上面舉的開門進入的例子代碼差不多就是這樣實現,當你需要改變實現方法時繼承父類重寫動作就好了。把一些重復的代碼抽象出來變成模板,這樣自己使用會更方便,同時代碼結構也會比較清晰
- 前言
- (1)代碼無錯就是優?——簡單工廠模式
- (2)商場促銷——策略模式
- (3)&(4)&(5) 設計模式原則
- (6)穿什么有這么重要?——裝飾模式
- (7)為別人做嫁衣——代理模式
- (8)雷鋒依然在人間——工廠方法模式
- (9)簡歷復印——原型模式
- (10)考題抄錯會做也白搭——模板方法模式
- (11)迪米特法則
- (12)牛市股票還會虧錢?—— 外觀模式
- (13)好菜每回味不同——建造者模式
- (14)老板回來,我不知道——觀察者模式
- java實現事件委托
- (15)就不能不還DB嗎?—— 抽象工廠模式
- (16)無盡加班何時休息——狀態模式
- (17)在NBA我需要翻譯——適配器模式
- (18)如果再回到從前——備忘錄模式
- (19)分公司=部門——組合設計模式
- (20)想走?可以!先買票——迭代器模式
- (21)有些類也需計劃生育——單例模式
- (22)手機軟件何時統一——橋接模式
- (23)烤羊肉串引來的思考——命令模式
- (24)加薪非要老總批?——職責鏈模式
- (25)世界需要和平——中介者模式
- (26)項目多也別傻做——享元模式
- (28)男人和女人——訪問者模式