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