設計模式之生活中的模板模式總結篇

模板模式總結篇java

在上一篇《設計模式之模板模式引導篇》中,咱們使用了泡咖啡和泡茶的平常小場景講解了模板模式的原理。本篇,咱們就結合這個小案例,來對模板模式進行總結。算法

本文出自《凱哥學設計模式》系列教程。做者:凱哥Java(kaigejava)設計模式

凱哥我的博客:www.kaigejava.comide

document_image_rId9.png

一:模板模式定義(或內容)spa

在上一篇中,咱們知道泡茶和泡咖啡都須要五個步驟。這五個步驟,其實就是算法骨架。設計

在具體是泡咖啡仍是泡茶,是加牛奶仍是加檸檬的時候,把這兩個具體步驟延遲到具體真的子類中來實現了。這樣就能夠在不修改泡茶或泡咖啡的算法結構下,實現特定步驟。orm

總結模板模式定義:document_image_rId10.png教程

先定義一個操做中的算法骨架,而將算法的某一個或者某些步驟的具體實現延遲到了子類中來實現,使得子類能夠在不修改當前算法的結構狀況下,從新定義當前算法的某些特定步驟。博客

模板模式屬於行爲模式的一種it

二:角色

抽象的基類

實現某些具體步驟的子類

關鍵代碼:公共的代碼在基類中實現(如:燒水、倒入杯中、送個客人這三個步驟就在基類hotdrink中實現的)

其餘步驟在具體子類中實現(如:是泡茶仍是泡咖啡粉就是在具體的子類中實現的)

三:使用場景

在軟件設計中,有些功能很相似,只是在某些環節不一樣而已。大多數環節都是相同的時候,可使用模板模式。

將通用的算法或者步驟抽取到抽象類中,在具體子類中實現具體特定的操做

四:優缺點

document_image_rId11.png

優勢:

封裝不變的部分,將不變的部分抽取出來;

擴展可變部分,將可變的設置抽象方法,讓具體子類來實現。

抽取的公共代碼,便於後期維護

行爲有基類來控制,具體操做有子類實現。

缺點:

每個不一樣的實現都須要有一個子類來實現,這樣就會致使類的數量大大的增長,使得系統更加龐大。

須要注意的地方:


爲了防止算法骨架被惡意的破壞或者惡意的操做,通常在使用模板模式的時候,模板方法都會加上final這個關鍵字來限制。

相關文章
相關標籤/搜索