內容:定義乙個操作中的演算法骨架,將一些步驟延遲到子類中。模板方法使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。使用模板方法,需要用到兩種角色,分別是抽象類和具體類。抽象類的作用是是定義抽象類(鉤子操作),實現乙個模板方法作為演算法的骨架。具體類的作用實現原子操作。
importtime
from abc import
abcmeta, abstractmethod
#抽象類
class window(metaclass=abcmeta):
@abstractmethod
def start(self): #
原子操作/鉤子操作
pass
@abstractmethod
def repaint(self): #
原子操作/鉤子操作
pass
@abstractmethod
def stop(self): #
原子操作/鉤子操作
pass
defrun(self):
"""模板方法(具體方法),這個大邏輯就不需要自己寫了
:return:
"""self.start()
while
true:
try:
self.repaint()
time.sleep(1)
except
keyboardinterrupt:
break
self.stop()
#具體類
class
mywindow(window):
def__init__
(self, msg):
self.msg =msg
defstart(self):
print('
視窗開始執行!')
defstop(self):
print('
視窗停止執行!')
defrepaint(self):
(self.msg)
mywindow(
"hello
").run()
模板方法適用的場景:一次性實現乙個演算法的不變部分,各個子類中的公共行為應該被提取出來並集中到乙個公共父類中以避免**重複;控制子類擴充套件。
模板方法模式 行為模式
1 描述 模板方法是一種行為設計模式,它在基類中定義了乙個演算法的框架,允許子類在不修改結構的情況下重寫演算法的特定步驟。優點 封裝不變部分,擴充套件可變部分 提取公共部分 便於維護 行為由父類控制,子類實現 缺點 按照我們的設計習慣,抽象類負責宣告最抽象 最一般的事物屬性和方法,實現類完成具體的事...
行為模式之模板方法模式
模板方法 template method 普遍存在於抽象類中,它用一些抽象的方法定義乙個演算法,而將這些抽象方法的具體實現放到子類中。模板方法包含兩部分 abstract class abstractclass abstract void prepare abstract void execute ...
12 模板方法模式 行為模式
4.擴充套件 5.參考資料 參考 設計模式之禪 個人理解 乙個演算法的實現有固定的步驟,比如上面的run 方法有start,stop,alarm和engineboom這幾個基本方法。在抽象類定義這些基本方法,然後模板方法 run方法 呼叫這些基本方法。子類繼承抽象類,由子類實現基本方法。子類的行為就...