11.明月如何代表我的心 -- 裝飾模式

      清晨,皎潔的月光照在潔白的病牀上。

      翠花睜開惺忪的睡眼,感覺到苦痛與無聊。幸好,苦娃陪伴着她,正所謂“一死一生乃見交情”,她覺得無尚欣慰。

      但苦娃隱約覺得,翠花好像不開心,每天愁眉不展的。

      苦娃想盡辦法逗她開心,扮鬼臉,說笑話,繞口令,猜謎語,打撲克,石頭剪子布,槓子老虎雞蟲,這些招都用了,美麗的翠花還是難露笑容,偶爾眯起櫻桃小口,看起來也很勉強。

      傍晚,苦娃對着窗戶朝外看,便看到了月環食(真巧啊),好美,好像給月亮穿上了美麗的外衣一樣,發出耀眼妖媚的光芒。苦娃開始冥思苦想,有了,不如給翠花買漂亮衣服穿吧。

      於是,苦娃出門逛服裝店,可轉來轉去,剛選出一些新潮的款式,一拍腦門,哎呀,忘了,萬一買來翠花穿了不合適怎麼辦?(又不好意思問人家三圍多少),於是他繼續轉。(真是死腦筋)

      路過一家大型商場,看到了一個新鮮玩意兒,高雅又有氣質,不禁慨然,“她怎麼裸着上身啊,她的胳膊怎麼斷了呀?”,逗的人家售貨的小姑娘咯咯咯咯的笑,“老土,這個都不曉得,這叫維納斯,是聲名顯赫的藝術品”,如此一說,使本來就已經被維納斯弄羞的苦娃的臉,不好意思的又在紅的基礎上紅了紅,猶如猴屁股一般。(~(@^_^@)~)

      看苦娃這樣,售貨小姐心裏別提多樂了,話也異乎尋常的更多了些,不動聲色地嫺熟地繼續介紹,“我們呢,還根據這個藝術品的造型,仿造了一些玩具,先生您不妨來看看,都是些既物美價廉,又能顯示身份的高檔玩具。”

      說着引領苦娃到了另一個櫃檯旁,指着玻璃窗內的玩具娃娃對苦娃講,“這個呢,是仿照維納斯做的芭比娃娃,德國進口軟膠”,接着拿出一個來,“您不妨玩一玩,感覺一下。”

      苦娃被那靈動的造型和激發想象力的排列組合吸引了,久久把玩着,愛不釋手。(動態地給一個對象添加一些額外的職責,也就是能爲已有功能動態地添加更多的功能,有效地把類的核心職責和裝飾功能分開了)

      今天說說裝飾模式。

---------------------------------------------------------------------------------------------------------------------------

      給你圖例:    

      有道是趣味相投,緣分使然,他買下這個禮物是對的,也給他帶來了意想不到的驚喜。

      翠花是個大話西遊中沙悟淨般的人物(張衛健版),她嗜好研究娃娃之類的東西達到近乎癡迷的境界,看到這個維納斯,她高興地狂笑起來,頭也不痛了,眼也不昏了,身子骨也硬朗了許多,她邊哼着歌曲邊擺弄起來----

 

 abstract class Venus //Component
{
public abstract void Show();
}

class ChangedVenus : Venus //ConcreteComponent
{
public override void Show()
{
Console.Write("維納斯的身上起了變化,依次安裝上了");
}
}

class Accessory : Venus //Decorator
{
protected Venus component;

public void Decorate(Venus component)
{
this.component = component;
}

public override void Show()
{
if (component != null)
{
component.Show();
}
}
}

class Arm : Accessory
{
public override void Show()
{
base.Show();
Console.Write("上肢 ");
}
}

class Ring : Accessory
{
public override void Show()
{
base.Show();
Console.Write("戒指 ");
}
}

class Glove : Accessory
{
public override void Show()
{
base.Show();
Console.Write("手套 ");
}
}

class Spin : Accessory
{
public override void Show()
{
base.Show();
Console.Write("會旋轉 ");
}
}

static void Main(string[] args)
{
//實例化維納斯
Venus ve = new ChangedVenus();

Console.WriteLine("第一種芭比組合:");
Arm a1 = new Arm();
Ring r1 = new Ring();
a1.Decorate(ve);
r1.Decorate(a1);
r1.Show();
Console.WriteLine();

Console.WriteLine("第二種芭比組合:");
Arm a2 = new Arm();
Glove g2 = new Glove();
a2.Decorate(ve);
g2.Decorate(a2);
g2.Show();
Console.WriteLine();

Console.WriteLine("第三種芭比組合:");
Arm a3= new Arm();
Glove g3 = new Glove();
Ring r3 = new Ring();
a3.Decorate(ve);
g3.Decorate(a3);
r3.Decorate(g3);
r3.Show();
Console.WriteLine();

Console.WriteLine("第四種芭比組合:");
Arm a4 = new Arm();
Ring r4 = new Ring();
Glove g4 = new Glove();
Spin s4 = new Spin();

a4.Decorate(ve);
r4.Decorate(a3);
g4.Decorate(r4);
s4.Decorate(g4);
s4.Show();
Console.WriteLine();
Console.Read();
}

 



      看到翠花如此醉心醉意,恢復了她以前的開心與爽朗,苦娃心裏甭提多高興了,連日來的陰霾也一掃而盡。

      打開窗戶,今夜月光明媚,皎潔無暇,苦娃心想明天啊一定是個豔陽天

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章