【設計模式之裝飾模式】
前言:
裝飾模式,屬於二十三個設計模式中之一,那麼,什麼是裝飾模式,下面,大家請跟著我一起走進裝飾模式,來看看裝飾模式:
核心:
(一)、結構圖
想知道設計模式嗎?那麼看了它的UML圖,你就一目瞭然了!
(二)基本程式碼
Component類
abstract class Component
{
public abstract void Operation();
}
ConcreteComponent類 class ConcreteComponent:Component
{
public override void Operation()
{
Console.WriteLine("具體物件的操作");
}
}
Decorato類abstract class Decorator : Component
{
protected Component component;
public void SetComponent(Component component)
{
this.component = component;
}
public override void Operation()
{
if (component != null)
{
component.Operation();
}
}
}
ConcreteDecoratorA類 class ConcreteDecoratorA : Decorator
{
private string addedState;
public override void Operation()
{
base .Operation();
addedState="New State";
Console.WriteLine("具體操作物件A的操作");
}
}
ConcreteDecoratorB類 class ConcreteDecoratorB : Decorator
{
public override void Operation()
{
base .Operation();
AddedBehavior();
Console .WriteLine ("具體操作物件B的操作");
}
public void AddedBehavior()
{
}
}
客戶端程式碼 static void Main(string[] args)
{
ConcreteComponent c = new ConcreteComponent();
ConcreteDecoratorA d1 = new ConcreteDecoratorA ();
ConcreteDecoratorB d2 = new ConcreteDecoratorB();
d1.SetComponent(c);
d2.SetComponent(d1);
d2.Operation();
}
(三)注意
學習設計模式要善於變通,如果只有一個ConcreteComponent類而沒有抽象的Component類,那麼Decorator類可以是ConcreteComponent的一個子類,同樣道理,如果只有一個ConcreteDecorator類,那麼就沒有必要建立一個單獨的Decoratorl類,而可以把Decorato和ConcreteDecorator的責任合併成一個類。
eg.人靠衣服來打扮
(四)、定義
動態的給物件新增一些額外的職責,就增加功能來說,裝飾模式比生成子類更加靈活。
我們可以通過記住穿衣服打扮自己的例子來理解這個裝飾模式,裝飾自己,就像新增一些額外的功能一樣,這樣有利於我們的記憶!
(五)、歸類
隸屬於建立型模式
(六)、優點
簡化原有的類,將核心職責和裝飾功能分開
總結:
裝飾模式,更好的在程式碼中實現,加以體會。要 當心的是,裝飾模式雖然不錯,但是我們在用它的時候,要注意裝飾的順序。
相關文章
- 設計模式之裝飾模式設計模式
- 設計模式系列之「裝飾模式」設計模式
- 設計模式之-裝飾器模式設計模式
- 設計模式之【裝飾器模式】設計模式
- 設計模式之裝飾者模式設計模式
- 設計模式之裝飾者模式(二)設計模式
- Go 設計模式之裝飾器模式Go設計模式
- 設計模式之裝飾者模式(一)設計模式
- PHP設計模式之裝飾者模式PHP設計模式
- Java設計模式之裝飾者模式Java設計模式
- java設計模式之裝飾器模式Java設計模式
- 我學設計模式 之裝飾模式設計模式
- 設計模式——裝飾模式設計模式
- 設計模式-裝飾模式設計模式
- 設計模式-裝飾設計模式設計模式
- 設計模式之裝飾器模式(decorator pattern)設計模式
- 【趣味設計模式系列】之【裝飾器模式】設計模式
- Golang 常見設計模式之裝飾模式Golang設計模式
- PHP設計模式之裝飾器模式(Decorator)PHP設計模式
- android常用設計模式之裝飾模式Android設計模式
- JAVA設計模式之 裝飾模式【Decorator Pattern】Java設計模式
- Java設計模式之裝飾模式趣談Java設計模式
- Java學設計模式之裝飾器模式Java設計模式
- 設計模式----裝飾器模式設計模式
- 設計模式-裝飾者模式設計模式
- 設計模式——裝飾者模式設計模式
- 設計模式-裝飾器模式設計模式
- [設計模式] 裝飾器模式設計模式
- 設計模式(八):裝飾模式設計模式
- [設計模式]裝飾者模式設計模式
- 8.java設計模式之裝飾者模式Java設計模式
- Java設計模式之裝飾者模式(Decorator pattern)Java設計模式
- 設計模式(十一)----結構型模式之裝飾者模式設計模式
- 裝飾設計模式設計模式
- 小白設計模式:裝飾者模式設計模式
- 設計模式--裝飾模式(Decorator Pattern)設計模式
- 設計模式(八)裝飾器模式設計模式
- 設計模式-裝飾模式(Decorator Pattern)設計模式