設計模式之模板方式模式

2021-08-10 11:19:06 字數 1248 閱讀 1390

我打算把設計模式都總結起來,寫成部落格,這樣以後複習總結或者需要更改的也更方便。

今天要聊的是:模板方式模式(template method pattern)

模板方式的定義:

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

直接上**:

class template:

def __init__(self):

pass

def logic(self):

print 'do something before ...'

print self.do_something_now()

print 'do something after ...'

def do_something_now(self):

return none

def __init__(self):

pass

def do_something_now(self):

return 'go to study'

def __init__(self):

pass

def do_something_now(self):

return 'go to play basketball'

if '__main__' == __name__:

obj1.logic()

obj2.logic()

do something before ....  

go to study

do something after ....

do something before ....

go to play basketball

do something after ....

補充:hook方法在抽象類中的實現為空,是留給子類做一些可選的操作。如果某個子類需要一些特殊額外的操作,則可以實現hook方法,當然也可以完全不用理會,因為hook在抽象類中只是空方法而已。

總結:

(1)模板方式模式是基於繼承的**復用技術,模板方式模式的結構和用法也是物件導向設計的核心之一。在模板方式模式中,可以將相同的**放在父類中,而將不同的方法實現放在不同的子類當中。

(2)模板方法定義了乙個演算法的步驟,並允許子類為乙個或多個步驟提供實現。

(1)(2)

模板設計模式 設計模式之模板模式

模板模式,通常又叫做模板方法模式,乙個抽象類公開定義了執行方法的模板,它的子類可以按需要重寫方法實現,但呼叫將以抽象類中定義的方法進行,這種型別的設計模式屬於行為型模式。模板模式主要解決將通用的演算法抽象起來,同樣的 邏輯出現了重複,就可以使用模板模式進行重構。關鍵 在抽象類實現,其他步驟在子類實現...

設計模式之模板設計模式

模板方法模式,定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變乙個演算法的結構即可重新定義該演算法的某些特定步驟。模板方法模式是通過把不變行為搬到超類,去除子類中的重複 來體現它的優勢。當不變和可變的行為在方法的子類實現中混合在一起的時候,不變的行為就會在子類中重複...

設計模式之模板設計模式

在父類中定義好演算法的骨架,然後在子類中去實現。總的來說就是父類中定義需要實現的總方法,然後在子類中去依次實現它 當然根據物件的不同,所實現的具體細節不同。下面來看乙個例子 在父類中我們定義三個抽象的方法job 在子類中去實現它。子類中執行execute方法 job1 如果當前時間能整除2 則執行j...