設計思想學習 組合模式

2021-08-14 07:01:35 字數 1676 閱讀 4311

本來這篇是要元旦發出來的,可惜玩的太嗨了,沒有時間發,只能抽空看看知識點。

祝大家新年新氣象,身心健康,心想事成。

相信只要玩過電腦的人都對下面的這張圖不會陌生

這結構想必大家也都熟悉,就是樹狀結構

其實這也是組合模式的定義

組合模式(composite):將物件組合成樹形結構以表示「部分-整體」的層次結構。組合模式使得使用者對單個物件和組合物件的使用具有一致性。

組合模式對單個物件(葉子物件)和組合物件(組合物件)具有一致性,它將物件組織到樹結構中,可以用來描述整體與部分的關係。同時它也模糊了簡單元素(葉子物件)和複雜元素(容器物件)的概念,使得客戶能夠像處理簡單元素一樣來處理複雜元素,從而使客戶程式能夠與複雜元素的內部結構解耦。

上面的圖展示了計算機的檔案系統,檔案系統由檔案和目錄組成,目錄下面也可以包含檔案或者目錄,計算機的檔案系統是用遞迴結構來進行組織的,對於這樣的資料結構是非常適用使用組合模式的。

在使用組合模式中需要注意一點也是組合模式最關鍵的地方:葉子物件和組合物件實現相同的介面。這就是組合模式能夠將葉子節點和物件節點進行一致處理的原因。

組合模式組成角色

uml圖

abstract class file

public string getname()

abstract

void add(file file);

abstract

void remove(file file);

void display();

}class musicfile extends file

@override

public

void

add(file file) {}

@override

public

void

remove(file file) {}

@override

public

void

display()

}class textfile extends file

@override

public

void

add(file file) {}

@override

public

void

remove(file file) {}

@override

public

void

display()

}class folder extends file

@override

public

void

add(file file)

@override

public

void

remove(file file)

@override

public

void

display()

}}public

class

client

}

設計思想學習 策略模式

首先來看一下定義 策略模式 strategy 定義一組演算法,將每個演算法都封裝起來,並且使他們之間可以互換 策略模式主要有三點組成 舉個栗子 我中午想吃好吃的,但可以吃的東西有很多種 烤鴨 龍蝦 帝王蟹,但是不管吃啥,都是吃,所有就有了抽象策略角色 inte ce dine 下面這些是具體吃啥,也...

設計思想學習 外觀模式

記得有一次,我們一起去了乙個別墅轟趴,那時候大家都去玩自己想玩的事情,大廳開燈是必須的,看電影的要去小房間開投影儀幕布,玩遊戲的要開電腦或者xbox等等。最後玩的筋疲力盡了還要乙個個去把他們關掉,那時候就在想如果有乙個按鈕關掉或者開啟所有多好。直到今天看了外觀模式才知道,那個想法就是乙個外觀模式的思...

設計思想學習 建造者模式

建造者模式 builder 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。建造者模式組成uml圖 個人理解 建造者定義很通俗易懂,就是將裝配的過程和成果展示分離,過程不變,但是我可以改變材料,出來不相同的作品。這個過程就由抽象建造者定義 實際建造者就是通過定義好的過程新增...