摘要:模板方法模式一模板方法模式定義定義一個操作中算法的框架,而將一些步驟延遲到子類中,使得子類可以不改變算法的結(jié)構(gòu)即可重定義該算法中的某些特定步驟角色抽象類實現(xiàn)了模板方法具體類實現(xiàn)抽象類中的抽象方法抽象類中的方法抽象方法父類只聲明,不實現(xiàn)模板方
模板方法模式
一. 模板方法模式 1.1 定義定義一個操作中算法的框架,而將一些步驟延遲到子類中,使得子類可以不改變算法的結(jié)構(gòu)即可重定義該算法中的某些特定步驟.
1.2 角色抽象類:實現(xiàn)了模板方法.
具體類:實現(xiàn)抽象類中的抽象方法.
1.3 抽象類中的方法抽象方法:父類只聲明,不實現(xiàn).
模板方法:父類聲明并實現(xiàn).
鉤子方法:父類聲明并實現(xiàn),由子類擴展.
二. 具體實現(xiàn) 2.1 創(chuàng)建抽象模板public abstract class AbstractTemplate { abstract void print1(); abstract void print2(); public final void execute(){ this.print1(); this.print2(); } }2.2 創(chuàng)建具體對象
public class TemplateA extends AbstractTemplate { @Override void print1() { System.out.println("TemplateA print1 ..."); } @Override void print2() { System.out.println("TemplateA print2 ..."); } } public class TemplateB extends AbstractTemplate { @Override void print1() { System.out.println("TemplateB print1 ..."); } @Override void print2() { System.out.println("TemplateB print2 ..."); } }2.3 調(diào)用
public static void main(String[] args) { AbstractTemplate template = new TemplateA(); template.execute(); template = new TemplateB(); template.execute(); }2.4 輸出
TemplateA print1 ... TemplateA print2 ... TemplateB print1 ... TemplateB print2 ...三. 優(yōu)缺點 3.1 優(yōu)點
封裝不變部分,擴展可變部分.
行為由父類控制,子類實現(xiàn).
3.2 缺點每個不同的實現(xiàn)方式都要新建一個子類,導(dǎo)致類膨脹.
四. 源碼https://github.com/Seasons20/DisignPattern.git
END
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/69743.html
摘要:模板可以很方便地用于訪問一個方法中的的被選擇的部分。為模板擬定的文檔定義了一個是怎樣被參數(shù)化的。為了處理注解,需要按名找到匹配模板的變量。在定義模板變量時,你需要更高的精確度。語法的第一部分定義了變量名,第二部分是一個正則表達式。 ????這一部分是對 Spring 5 文檔的直接翻譯,連接是這個。這一部分的示例不再貼代碼,請到這個項目的 mvc 分支下查看,本篇示例的控制器名稱是 U...
摘要:從李淵開國看模板方法模式假如史書記載沒有水分的話,那么相對于其他開國皇帝,李淵的難度最低,畢竟什么事情都交給他兒子干就完事了。而李世民則接受李淵的調(diào)遣,負(fù)責(zé)實現(xiàn)各個細(xì)節(jié)。模板方法模式是抽象與實踐分離的又一個經(jīng)典實踐。 Template Method: 從李淵開國看模板方法模式 假如史書記載沒有水分的話,那么相對于其他開國皇帝,李淵的難度最低,畢竟什么事情都交給他兒子干就完事了。 從晉陽...
摘要:原作者唐斌騰訊什么原名是一個簡單易用的前端模板預(yù)編譯工具。本文作者為來自騰訊團隊的唐斌,他在本文中為我們分析了傳統(tǒng)前端模板內(nèi)嵌的弊端,如開發(fā)調(diào)試效率低下自動化構(gòu)建復(fù)雜度比較高等特點,并針對目前現(xiàn)狀給出了較好的解決方案。 原作者: 唐斌(騰訊)| TmodJS什么 TmodJS(原名atc)是一個簡單易用的前端模板預(yù)編譯工具。它通過預(yù)編譯技術(shù)讓前端模板突破瀏覽器限制,實現(xiàn)后端模板一樣的同...
摘要:目錄建造者模式應(yīng)用。其實不用也可以,因為不是很復(fù)雜,只是為了復(fù)習(xí)一下所學(xué)過的設(shè)計模式知識目錄工廠模式應(yīng)用。 為了提高開發(fā)效率,通常會想辦法把一些模式固定的重復(fù)性的勞動抽取出來,以后再使用的時候,拿來主義就可以了。這樣既可以提高開發(fā)效率,又降低了出錯的風(fēng)險。 這一思想在我們的日常工作中可以說隨處可見,我們完成一項復(fù)雜的工程,并不需要面面俱到什么都自己寫,我們完全可以利用第三方的jar包讓...
摘要:前兩篇文章主要說明了的模板系統(tǒng)將模板文件處理后得到的結(jié)果函數(shù)。生成函數(shù)的代碼這個是模板生成過程中最長最復(fù)雜的一段,會應(yīng)用到的分析功能以及動態(tài)編譯功能。參數(shù)都是一個,表示還未解析的模板內(nèi)容。 前兩篇文章主要說明了web.py的模板系統(tǒng)將模板文件處理后得到的結(jié)果:__template__()函數(shù)。本文主要講述模板文件是如何變成__template__()函數(shù)的。 Render和frende...
閱讀 3741·2021-10-15 09:42
閱讀 2603·2021-09-03 10:50
閱讀 1642·2021-09-03 10:28
閱讀 1795·2019-08-30 15:54
閱讀 2517·2019-08-30 12:46
閱讀 412·2019-08-30 11:06
閱讀 2826·2019-08-30 10:54
閱讀 528·2019-08-29 12:59