設計模式 裝飾者模式 結構型

2021-07-23 14:33:15 字數 1990 閱讀 5669

裝飾者模式

動態的給一些物件新增一些職能,就增加功能來說,裝飾者比生成子類更靈活。

模型圖

**

public abstract class component
public class concretecomponet  extends component 

}

public abstract class decorator  extends component

@override

public abstract void operation();

}

public class concreatedecoratora extends decorator

@override

public void operation()

}

public class concreatedecoratorb  extends decorator 

@override

public void operation()

}

public class test 

}

執行結果

案例設計

需求:假設我們在製作一款rpg遊戲,然後要建立乙個角色soul_artist,這個時候我們就會設計到打裝備。打到的裝備要經常配置到我的身上,提公升技能。然而又不能不穿漢庫。就此請設計乙個程式來完成這樣的需求。

模型圖

**

public abstract class person
public class soulartist extends person

}

public abstract class decoratorperson extends person

@override

public abstract string showdress();

}

public class decoratorshortdress extends decoratorperson 

@override

public string showdress()

}

public class decoratortshirtdress extends decoratorperson

@override

public string showdress()

}

public class test 

}

結果圖

場景1 裝飾者模式是為已有功能動態新增更多功能的一種方式。

2 在實際生產的時候 當系統需要新功能的時候 是向舊的類中新增新的**。這些新加的**通常裝飾了

原有類的核心職責或主要行為

3 裝飾者模式提供了乙個非常好的解決方案 它把每個要裝飾的功能放在單獨的類中,並讓這個類包裝它所有裝飾的物件,

因此,當需要執行特殊行為時。客戶可以根據選擇的按順序的使用裝飾者功能包裝物件。

優點1 把類中裝飾的功能從類中移除,簡化原有的類。

2 把核心職責跟,裝飾的職責分開,有效的去除重複的相關邏輯。

結構型模式 裝飾者設計模式

裝飾模式指的是在不必改變原類檔案和繼承的情況下,動態地擴充套件乙個物件的功能。它是通過建立乙個包裝物件,也就是裝飾來包裹真實的物件,比如處理流。應用場景 需要擴充套件乙個類的功能,或給乙個類新增附加職責。優點就是耦合性低,重用性高 高內聚,低耦合 按照一般的方法,要麼就是分別修改各自的read方法,...

設計模式 結構型模式 裝飾者模式

方 案1 解決星巴克咖啡訂單問題分析 1 drink 是乙個抽象類,表示飲料 2 des就是對咖啡的描述,比如咖啡的名字 3 cost 方法就是計算費用,drink 類中做成乙個抽象方法.4 decaf 就是單品咖啡,繼承drink,並實現cost 5 espress milk 就是單品咖啡 調料,...

裝飾者模式(結構型)

裝飾者模式 動態的將責任附加到物件上。若要擴充套件功能,裝飾者提供了比繼承更有彈性的替代方案。裝飾者模式類圖 component是我們要裝飾的元件,decorator是我們的裝飾器,在這裡繼承要裝飾的元件 使用裝飾的目的就是拓展功能而不改變原有的 這樣,我們新增乙個裝飾者,客戶端依然可以呼叫原有的元...