Swift 重學設計模式系列之模板方法模式

2021-10-09 07:24:15 字數 802 閱讀 8280

模板方法(template method)模式的定義如下:定義乙個操作中的演算法骨架,而將演算法的一些步驟延遲到子類中,使得子類可以不改變該演算法結構的情況下重定義該演算法的某些特定步驟。它是一種類行為型模式。

該模式的主要優點如下。

1.    它封裝了不變部分,擴充套件可變部分。它把認為是不變部分的演算法封裝到父類中實現,而把可變部分演算法由子類繼承實現,便於子類繼續擴充套件。

2.    它在父類中提取了公共的部分**,便於**復用。

3.    部分方法是由子類實現的,因此子類可以通過擴充套件方式增加相應的功能,符合開閉原則。

該模式的主要缺點如下。

1.    對每個不同的實現都需要定義乙個子類,這會導致類的個數增加,系統更加龐大,設計也更加抽象。

2.    父類中的抽象方法由子類實現,子類執行的結果會影響父類的結果,這導致一種反向的控制結構,它提高了**閱讀的難度。

class man 

func daytime()

func night()

func start()

}class singledog: man

}let man = man()

man.start()

print("----------")

let singledog = singledog()

singledog.start()

//起床

//工作

//約會

//----------

//起床

//工作

//打遊戲/睡覺

Swift 重學設計模式系列之工廠模式

工廠方法 factorymethod 模式的定義 定義乙個建立產品物件的工廠介面,將產品物件的實際建立工作推遲到具體子工廠類當中。這滿足建立型模式中所要求的 建立與使用相分離 的特點。工廠方法模式的主要優點有 使用者只需要知道具體工廠的名稱就可得到所要的產品,無須知道產品的具體建立過程 在系統增加新...

Swift 重學設計模式系列之組合模式

組合 composite 模式的定義 有時又叫作部分 整體模式,它是一種將物件組合成樹狀的層次結構的模式,用來表示 部分 整體 的關係,使使用者對單個物件和組合物件具有一致的訪問性。組合模式的主要優點有 1.組合模式使得客戶端 可以一致地處理單個物件和組合物件,無須關心自己處理的是單個物件,還是組合...

Swift 重學設計模式系列之介面卡模式

介面卡模式 adapter 的定義如下 將乙個類的介面轉換成客戶希望的另外乙個介面,使得原本由於介面不相容而不能一起工作的那些類能一起工作。介面卡模式分為類結構型模式和物件結構型模式兩種,前者類之間的耦合度比後者高,且要求程式設計師了解現有元件庫中的相關元件的內部結構,所以應用相對較少些。該模式的主...