初探設計模式 模板方法模式

2021-10-03 06:43:49 字數 855 閱讀 8280

如果一些類有很多重複性的**,我們可以應用此模式把相同方法抽離出來,把相似的一些方法抽象出來。

演算法結構中可以通過鉤子方法讓子類實現演算法中可選的部分,也可讓子類有機會對模板方法中即將發生的行為作出反應。

public

abstract

class

bevepage

}abstract

void

brew()

;//子類給出特有的完整實現

void

boilwater()

boolean

hook()

//鉤子方法

}

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

抽象類中有一些鉤子方法,可以作為條件控制影響抽象類的演算法流程。子類物件通過hook返回值決定是否再次執行boilwater。
好萊塢原則:允許底層元件掛鉤到系統上,高層元件決定什麼時候怎麼使用這些元件。別呼叫(打**給)我們。我們會呼叫(打**給)你。

模板方法、工廠方法、觀察者都採用了這個原則。與依賴倒置原則相比兩者目標都在解耦,依希望我們避免使用具體類多使用抽象(設計中)避免依賴,好萊塢原則是用在建立框架或元件上的設計技巧,允許底層結構能夠互相操作防止其他類太過依賴他們。

-策略模式和模板方法模式都封裝演算法,乙個用組合,乙個用繼承。

-工廠方法是模板方法的一種特殊版本。

在jdk中的身影:array類的sort方法,inputstream類的read方法。。

模板設計模式 設計模式 模板方法模式

在模板模式 template pattern 中,乙個抽象類公開定義了執行它的方法的方式 模板。它的子類可以按需要重寫方法實現,但呼叫將以抽象類中定義的方式進行。這種型別的設計模式屬於行為型模式。首先需要一定抽象的定義,沒有具體的實現,但是在抽象類的行為中,子類去程序這個抽象類,重寫抽象方法,實現不...

設計模式 模板方法設計模式

物件導向,萬物皆物件,用乙個雷來反應現實生活中的東西。比如銀行系統,業務公升級 活期 定期,差別很小,就加判斷 違背單一職責 差別比較多,尤其是模擬較複雜,型別拆分下。拆分之後,自然就有父類,重用。利率 每個客戶端都有利率,但是各不一樣 抽象方法。show 不分客戶端是一樣的,個別客戶端是不一樣的 ...

設計模式 模板方法模式

模板方法模式 類庫中大量使用,例如idbconnection介面 dbconnection抽象類 派生的sqlconnection和派生的oledbconnection就是使用了這種方法 1。介面,到能做的定義進來。一種規範 2.把共同的部分進去分離出來,放到乙個抽象的父類去實現.3.子類中實現 不...