裝飾者模式
動態的給一些物件新增一些職能,就增加功能來說,裝飾者比生成子類更靈活。
模型圖
**
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是我們的裝飾器,在這裡繼承要裝飾的元件 使用裝飾的目的就是拓展功能而不改變原有的 這樣,我們新增乙個裝飾者,客戶端依然可以呼叫原有的元...