模板方法模式 python

2021-05-28 18:14:36 字數 1576 閱讀 4371

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

優點:把不變行為搬移到超類,去除子類中的重複**。

#encoding=utf-8

##by panda

#模板方法模式

def printinfo(info):

print unicode(info, 'utf-8').encode('gbk')

#金庸**試題考卷

class test*****:

def testquestion1(self):

printinfo('練成倚天劍和屠龍刀的玄鐵可能是 a.球墨鑄鐵 b.馬口鐵 c.高速合金鋼 d.碳素纖維')

printinfo('答案:'+self.answer1())

def testquestion2(self):

printinfo('楊過、程英、陸無雙剷除了情花,造成 a.使這種植物不再害人 b.使一種珍稀物種滅絕 c.破壞生態平衡 d.造成該地區沙漠化')

printinfo('答案:'+self.answer2())

def testquestion3(self):

printinfo('藍鳳凰致使華山師徒、桃谷六仙嘔吐不止,如果你是大夫,會給他們開什麼藥 a.阿司匹林 b. 牛黃解毒片 c.氟哌酸 d.喝大量的生牛奶 e.以上全不對')

printinfo('答案:'+self.answer3())

def answer1(self):

return ''

def answer2(self):

return ''

def answer3(self):

return ''

#學生甲

class test*****a(test*****):

def answer1(self):

return 'a'

def answer2(self):

return 'b'

def answer3(self):

return 'c'

#學生乙

class test*****b(test*****):

def answer1(self):

return 'b'

def answer2(self):

return 'd'

def answer3(self):

return 'e'

def clientui():

a = test*****a();

a.testquestion1()

a.testquestion2()

a.testquestion3()

b = test*****b();

b.testquestion1()

b.testquestion2()

b.testquestion3()

return

if __name__ == '__main__':

clientui();

類圖:

模板方法模式 python

模板方法模式 定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。因此模板方法使得子類可以在不改變乙個演算法的結構的情況下重新定義該演算法的某些特定變數。優點 把不變行為搬移到超類,去除子類中的重複 應用特性 重複做相同邏輯的事情,但是具體細節不同的場景 結構特性 相同邏輯抽取至父類,具體細節留...

模板方法模式(python)

模板方法模式 在父類中定義操作的演算法骨架,讓演算法的一些特殊步驟在子類中實現。模板方法實現了子類在不改變演算法骨架的基礎上 很容易重定義那些特殊的步驟 from abc import abcmeta,abstractmethod class template object metaclass ab...

Python設計模式 模板方法模式

模板方法模式是乙個比較容易理解的設計模式,用乙個考試的例子來講比較通俗易懂,我們考試的時候大家用的都是同乙份試卷,只是是每個人做的答案有可能不一樣,如果每個人都抄乙份試卷那就要完蛋了,考試時間都放在抄試卷上了,如果老師把試卷寫在黑板上,那麼每個同學就只需要將答案交給老師就好了,從而節約了不少時間。首...