Python設(shè)計(jì)模式之模板方法模式實(shí)例詳解
本文實(shí)例講述了Python設(shè)計(jì)模式之模板方法模式。分享給大家供大家參考,具體如下:
模板方法模式(Template Method Pattern):定義一個(gè)操作中的算法骨架,將一些步驟延遲至子類中.模板方法使得子類可以不改變一個(gè)算法的結(jié)構(gòu)即可重定義該算法的某些特定步驟。
下面是一個(gè)模板方法模式的一個(gè)demo:
#!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'Andy' """ 大話設(shè)計(jì)模式 設(shè)計(jì)模式——模板方法模式 模板方法模式(Template Method Pattern):定義一個(gè)操作中的算法骨架,將一些步驟延遲至子類中.模板方法使得子類可以不改變一個(gè)算法的結(jié)構(gòu)即可重定義該算法的某些特定步驟 使用場景:當(dāng)不變和可變的行為在方法的子類實(shí)現(xiàn)中混合在一起時(shí),不變的行為就會(huì)在子類中重復(fù)出現(xiàn),用模板方法模式把這些不變的行為搬到單一的地方,幫助子類擺脫重復(fù)不變的行為糾纏 """ class NewPaper(object): def question1(self): print "題目1" print self.answer1() def question2(self): print "題目2" print self.answer2() def answer1(self): return '' def answer2(self): return '' class TestPaperA(NewPaper): def answer1(self): return '答案A1' def answer2(self): return '答案A2' class TestPaperB(NewPaper): def answer1(self): return '答案B1' def answer2(self): return '答案B2' if __name__ == '__main__': test1 = TestPaperA() test2 = TestPaperB() print "試卷A" test1.question1() test1.question2() print "試卷B" test2.question1() test2.question2()
運(yùn)行結(jié)果:
試卷A
題目1
答案A1
題目2
答案A2
試卷B
題目1
答案B1
題目2
答案B2
上面類的設(shè)計(jì)如下圖:
NewPaper是抽象類,定義抽象模板并實(shí)現(xiàn)了抽象模板方法,TestPaper實(shí)現(xiàn)父類的一個(gè)或多個(gè)抽象方法
當(dāng)不變和可變的行為在子類的方法中混合在一起時(shí),不變的行為就會(huì)在子類中重復(fù)出現(xiàn),通過模板方法模式把這些行為搬到單一的地方,幫助子類擺脫重復(fù)的不變行為的糾纏
更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進(jìn)階經(jīng)典教程》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
- Python設(shè)計(jì)模式之代理模式實(shí)例詳解
- Python設(shè)計(jì)模式之原型模式實(shí)例詳解
- Python設(shè)計(jì)模式之觀察者模式原理與用法詳解
- Python設(shè)計(jì)模式之狀態(tài)模式原理與用法詳解
- Python設(shè)計(jì)模式之適配器模式原理與用法詳解
- Python設(shè)計(jì)模式之組合模式原理與用法實(shí)例分析
- Python設(shè)計(jì)模式之享元模式原理與用法實(shí)例分析
- Python設(shè)計(jì)模式之解釋器模式原理與用法實(shí)例分析
- Python設(shè)計(jì)模式之迭代器模式原理與用法實(shí)例分析
- Python設(shè)計(jì)模式之橋接模式原理與用法實(shí)例分析
- Python設(shè)計(jì)模式之裝飾模式實(shí)例詳解
相關(guān)文章
Python數(shù)據(jù)處理Pandas庫的使用詳解
這篇文章主要為大家詳細(xì)介紹了pandas庫的使用方法,包括數(shù)據(jù)導(dǎo)入與導(dǎo)出、數(shù)據(jù)查看和篩選、數(shù)據(jù)處理和分組操作等,感興趣的小伙伴可以了解一下2023-07-07對(duì)python中arange()和linspace()的區(qū)別說明
這篇文章主要介紹了對(duì)python中arange()和linspace()的區(qū)別說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-05-05pyinstaller打包python3.6和PyQt5中各種錯(cuò)誤的解決方案匯總
pyinstaller是打包python很方便的一個(gè)套件,我們可以很輕易地使用他,下面這篇文章主要給大家介紹了關(guān)于pyinstaller打包python3.6和PyQt5中各種錯(cuò)誤解決的相關(guān)資料,需要的朋友可以參考下2022-08-08Python?數(shù)據(jù)可視化實(shí)現(xiàn)5種炫酷的動(dòng)態(tài)圖
數(shù)據(jù)可以幫助我們描述這個(gè)世界、闡釋自己的想法和展示自己的成果,但如果只有單調(diào)乏味的文本和數(shù)字,我們卻往往能難抓住觀眾的眼球。而很多時(shí)候,一張漂亮的可視化圖表就足以勝過千言萬語2022-01-01Python中struct模塊對(duì)字節(jié)流/二進(jìn)制流的操作教程
最近在學(xué)習(xí)python網(wǎng)絡(luò)編程這一塊,在寫簡單的socket通信代碼時(shí),遇到了struct這個(gè)模塊的使用,當(dāng)時(shí)不太清楚這到底有和作用,后來查閱了相關(guān)資料大概了解了,這篇文章就主要介紹了Python中struct模塊對(duì)字節(jié)流/二進(jìn)制流的操作,需要的朋友可以參考借鑒。2017-01-01給你選擇Python語言實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法的三大理由
這篇文章主要介紹了給你選擇Python語言實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法的三大理由,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11python openvc 裁剪、剪切圖片 提取圖片的行和列
這篇文章主要介紹了python openvc 裁剪、剪切圖片 提取圖片的行和列,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09