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

2021-10-23 21:53:23 字數 1019 閱讀 9942

組合(composite)模式的定義:有時又叫作部分-整體模式,它是一種將物件組合成樹狀的層次結構的模式,用來表示「部分-整體」的關係,使使用者對單個物件和組合物件具有一致的訪問性。

組合模式的主要優點有:

1.    組合模式使得客戶端**可以一致地處理單個物件和組合物件,無須關心自己處理的是單個物件,還是組合物件,這簡化了客戶端**;

2.    更容易在組合體內加入新的物件,客戶端不會因為加入了新的物件而更改源**,滿足「開閉原則」;

其主要缺點是:

1.    設計較複雜,客戶端需要花更多時間理清類之間的層次關係;

2.    不容易限制容器中的構件;

3.    不容易用繼承的方法來增加構件的新功能;

enum nodetype 

protocol nodeprotocol

class node : nodeprotocol

func addnode(node: node)

func showinfo() }}

}let node0 = node(type: .finder, name: "我的電腦")

let node1 = node(type: .finder, name: "d盤")

let node2 = node(type: .finder, name: "->學習資料")

let node3 = node(type: .file, name: "-->愛情片")

let node4 = node(type: .file, name: "-->動作片")

node0.addnode(node: node1)

node1.addnode(node: node2)

node2.addnode(node: node3)

node2.addnode(node: node4)

node0.showinfo()

//d盤

//->學習資料

//-->愛情片

//-->動作片

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

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

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

模板方法 template method 模式的定義如下 定義乙個操作中的演算法骨架,而將演算法的一些步驟延遲到子類中,使得子類可以不改變該演算法結構的情況下重定義該演算法的某些特定步驟。它是一種類行為型模式。該模式的主要優點如下。1.它封裝了不變部分,擴充套件可變部分。它把認為是不變部分的演算法封...

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

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