大話設計模式八之模板方法模式

2021-08-19 06:54:21 字數 1711 閱讀 9404

幾年之前,那時候很流行微軟的mcse和mcsd的認證考試。於是國內就出現了血多培訓機構。大學生們為了能找到好工作都去參加這個培訓。有個哥們,不是計算機專業的,對軟體開放也算基本不懂吧,但是英文特好,於是它參加了這個培訓後,短短乙個多月,靠著背答案,竟然把mcsd的證書考出來了。乙個幾乎不會開放的人卻考出了世界最大軟體公司的開發技術認證,你感覺如何?

(我覺得這種方式雖然不可取,但是這個人夠刻苦,別人去玩兒的時間他去學習去考證,說明有一定的能力。但是自己本身沒有開發經驗,需要先充實自己,在閱讀英文資料的方面他比別人多很多的優勢,彎路也可以比別人少走很多,如果有興趣,相同的時間學相同的內容,他的學習效率會高很多,進步和提公升空間也會比別人大很多。量變引起質變,堅,總會有質的提公升)

說明中國學生很聰明?

其實這個認證在美國還是很有權威性的,只是中國的學生太會考試了。這帶來的後果就是毀了這個證書,不管哪家公司找到這個不會開發的人都會有上當的感覺,於是對微軟證書徹底失望。

這是標準化考試的弊端,但標準化考試的好處就是比較客觀,不管在世界的哪個地方,大家做相同型別的題目,得分超過一定分數,就就判定達到一定的能力。

既然用了繼承,並且肯定這個繼承有意義,就應該要成為子類的模板,所有重複的**都應該要上公升到父類去,而不是讓每個子類都去重複。

當我們要完成在某一細節層次一致的乙個過程或一系列步驟,但其個別步驟在更詳細的層次上的實現可能不同時,我們通常考慮用模板方法模式來處理。

模板方法模式:定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。

abstractclass是抽象類,其實也就是一抽象模板,定義並實現了乙個模板方法。這個模板方法一般是乙個具體方法,它給出了乙個頂級邏輯的骨架,而邏輯的組成步驟在相應的抽象操作中,推遲到子類實現。頂級邏輯也有可能呼叫一些具體方法。

concreteclass,實現父類所定義的乙個或多個抽象方法。每乙個abstractclass都可以有任意多個concreteclass與之對應,而每乙個concreteclass都可以給出這些抽象方法(也就是頂級邏輯的組成步驟)的不同實現,從而使得頂級邏輯的實現各不相同。

模板方法模式是通過把不變行為搬移到超類,去除子類中的重複**類體現它的優勢。

模板方法模式就是提供了乙個很好的**復用平台。

當不變的和可變的行為在方法的子類實現中混合在一起的時候,不變的行為就會在子類中重複出現。我們通過模板方法模式把這些行為搬移到單一的地方,這樣就幫助子類擺脫重複的不變行為的糾纏。

大話設計模式學習(八) 模板方法模式

定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變乙個演算法的結構既可重定義該演算法的某些特定步驟 abstractclass 是抽象類,其實也就是一抽象模板,定義並實現了乙個模板方法,這個模板方法一般是乙個具體方法,它給出了乙個頂級邏輯的骨架,而邏輯的組成步驟在相應...

大話設計模式筆記(八) 模板方法模式

小時候數學老師的隨堂測驗,都是在黑板上抄題目,然後再作答案。寫乙個抄題目的程式。學生甲抄的試卷 created by callmedevil on 2019 7 14.public class test a 試題2 public void testquestion2 學生乙抄的試卷 created ...

八 大話設計模式之模板方法模式

good 把不變的 部分都轉移到父類中,將可變的 用 virtual 留到子類重寫。迪公尺特法則 如果兩個類不直接通訊,那麼這兩個類就不應當發生直接的相互作用。如果乙個類需要呼叫另乙個類的某個方法的話,可以通過第三個類 這個呼叫。在類的結構設計上,每乙個類都應該盡量降低成員的訪問許可權。該法則在後面...