模板方法模式 python

2021-07-23 16:01:09 字數 2505 閱讀 6368

模板方法模式

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

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

應用特性:重複做相同邏輯的事情,但是具體細節不同的場景

結構特性:相同邏輯抽取至父類,具體細節留置子類。可以說是對邏輯的抽象

[python]view plain

copy

#encoding=utf-8

##by panda

#模板方法模式

defprintinfo(info):  

print

unicode(info, 

'utf-8'

).encode(

'gbk'

)  #金庸**試題考卷

class

test*****:  

deftestquestion1(

self

):  

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

)  printinfo('答案:'

+self

.answer1())  

deftestquestion2(

self

):  

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

)  printinfo('答案:'

+self

.answer2())  

deftestquestion3(

self

):  

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

)  printinfo('答案:'

+self

.answer3())  

defanswer1(

self

):  

return

''def

answer2(

self

):  

return

''def

answer3(

self

):  

return

''#學生甲

class

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

defanswer1(

self

):  

return

'a'def

answer2(

self

):  

return

'b'def

answer3(

self

):  

return

'c'#學生乙

class

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

defanswer1(

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();  

類圖:貼上我自己的**:

class predict:

y_pred =

def linpredict(self):

y_pred = linreg.predict(x_test)#注:對於紅酒資料,線性回歸還是使用非歸一化的資料,結果表現更好

return y_pred

def plspredict(self):

y_pred = plsreg.predict(x_test_scaled)#pls使用歸一化的資料,結果要更準確

return y_pred

def plscpredict(self):

y_pred_scaled = plscreg.predict(x_test_scaled)

return y_pred_scaled

模板方法模式 python

模板方法模式 定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。因此模板方法使得子類可以在不改變乙個演算法的結構的情況下重新定義該演算法的某些特定變數。優點 把不變行為搬移到超類,去除子類中的重複 encoding utf 8 by panda 模板方法模式 def printinfo inf...

模板方法模式(python)

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

Python設計模式 模板方法模式

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