明月如何代表我的心 -- 装饰模式
来源:互联网 发布:简明python教程在哪买 编辑:程序博客网 时间:2024/05/01 04:28
明月如何代表我的心 -- 装饰模式
清晨,皎洁的月光照在洁白的病床上。
翠花睁开惺忪的睡眼,感觉到苦痛与无聊。幸好,苦娃陪伴着她,正所谓“一死一生乃见交情”,她觉得无尚欣慰。
但苦娃隐约觉得,翠花好像不开心,每天愁眉不展的。
苦娃想尽办法逗她开心,扮鬼脸,说笑话,绕口令,猜谜语,打扑克,石头剪子布,杠子老虎鸡虫,这些招都用了,美丽的翠花还是难露笑容,偶尔眯起樱桃小口,看起来也很勉强。
傍晚,苦娃对着窗户朝外看,便看到了月环食(真巧啊),好美,好像给月亮穿上了美丽的外衣一样,发出耀眼妖媚的光芒。苦娃开始冥思苦想,有了,不如给翠花买漂亮衣服穿吧。
于是,苦娃出门逛服装店,可转来转去,刚选出一些新潮的款式,一拍脑门,哎呀,忘了,万一买来翠花穿了不合适怎么办?(又不好意思问人家三围多少),于是他继续转。(真是死脑筋)
路过一家大型商场,看到了一个新鲜玩意儿,高雅又有气质,不禁慨然,“她怎么裸着上身啊,她的胳膊怎么断了呀?”,逗的人家售货的小姑娘咯咯咯咯的笑,“老土,这个都不晓得,这叫维纳斯,是声名显赫的艺术品”,如此一说,使本来就已经被维纳斯弄羞的苦娃的脸,不好意思的又在红的基础上红了红,犹如猴屁股一般。(~(@^_^@)~)
看苦娃这样,售货小姐心里别提多乐了,话也异乎寻常的更多了些,不动声色地娴熟地继续介绍,“我们呢,还根据这个艺术品的造型,仿造了一些玩具,先生您不妨来看看,都是些既物美价廉,又能显示身份的高档玩具。”
说着引领苦娃到了另一个柜台旁,指着玻璃窗内的玩具娃娃对苦娃讲,“这个呢,是仿照维纳斯做的芭比娃娃,德国进口软胶”,接着拿出一个来,“您不妨玩一玩,感觉一下。”
苦娃被那灵动的造型和激发想象力的排列组合吸引了,久久把玩着,爱不释手。(动态地给一个对象添加一些额外的职责,也就是能为已有功能动态地添加更多的功能,有效地把类的核心职责和装饰功能分开了)
今天说说装饰模式。
---------------------------------------------------------------------------------------------------------------------------
给你图例:
有道是趣味相投,缘分使然,他买下这个礼物是对的,也给他带来了意想不到的惊喜。
翠花是个大话西游中沙悟净般的人物(张卫健版),她嗜好研究娃娃之类的东西达到近乎痴迷的境界,看到这个维纳斯,她高兴地狂笑起来,头也不痛了,眼也不昏了,身子骨也硬朗了许多,她边哼着歌曲边摆弄起来----
1 abstract class Venus //Component
2 {
3 public abstract void Show();
4 }
5
6 class ChangedVenus : Venus //ConcreteComponent
7 {
8 public override void Show()
9 {
10 Console.Write("维纳斯的身上起了变化,依次安装上了");
11 }
12 }
13
14 class Accessory : Venus //Decorator
15 {
16 protected Venus component;
17
18 public void Decorate(Venus component)
19 {
20 this.component = component;
21 }
22
23 public override void Show()
24 {
25 if (component != null)
26 {
27 component.Show();
28 }
29 }
30 }
31
32 class Arm : Accessory
33 {
34 public override void Show()
35 {
36 base.Show();
37 Console.Write("上肢 ");
38 }
39 }
40
41 class Ring : Accessory
42 {
43 public override void Show()
44 {
45 base.Show();
46 Console.Write("戒指 ");
47 }
48 }
49
50 class Glove : Accessory
51 {
52 public override void Show()
53 {
54 base.Show();
55 Console.Write("手套 ");
56 }
57 }
58
59 class Spin : Accessory
60 {
61 public override void Show()
62 {
63 base.Show();
64 Console.Write("会旋转 ");
65 }
66 }
1 static void Main(string[] args)
2 {
3 //实例化维纳斯
4 Venus ve = new ChangedVenus();
5
6 Console.WriteLine("第一种芭比组合:");
7 Arm a1 = new Arm();
8 Ring r1 = new Ring();
9 a1.Decorate(ve);
10 r1.Decorate(a1);
11 r1.Show();
12 Console.WriteLine();
13
14 Console.WriteLine("第二种芭比组合:");
15 Arm a2 = new Arm();
16 Glove g2 = new Glove();
17 a2.Decorate(ve);
18 g2.Decorate(a2);
19 g2.Show();
20 Console.WriteLine();
21
22 Console.WriteLine("第三种芭比组合:");
23 Arm a3= new Arm();
24 Glove g3 = new Glove();
25 Ring r3 = new Ring();
26 a3.Decorate(ve);
27 g3.Decorate(a3);
28 r3.Decorate(g3);
29 r3.Show();
30 Console.WriteLine();
31
32 Console.WriteLine("第四种芭比组合:");
33 Arm a4 = new Arm();
34 Ring r4 = new Ring();
35 Glove g4 = new Glove();
36 Spin s4 = new Spin();
37
38 a4.Decorate(ve);
39 r4.Decorate(a3);
40 g4.Decorate(r4);
41 s4.Decorate(g4);
42 s4.Show();
43 Console.WriteLine();
44 Console.Read();
45 }
看到翠花如此醉心醉意,恢复了她以前的开心与爽朗,苦娃心里甭提多高兴了,连日来的阴霾也一扫而尽。
打开窗户,今夜月光明媚,皎洁无暇,苦娃心想,明天啊,一定是个艳阳天!
- 明月如何代表我的心 -- 装饰模式
- 【设计模式】装饰者模式-明月装饰了你的窗子
- 【设计模式】装饰者模式-明月装饰了你的窗子
- 【设计模式】装饰者模式-明月装饰了你的窗子
- 我本将心对明月
- 我对装饰者模式的理解
- python 装饰器模式 我的理解
- 我眼中的装饰器模式
- 听《月亮可以代表我的心》
- 我选择喜欢你,问明月 ,爱恨之间,心的构造,乱世俱灭
- 如何理解装饰模式?
- 装饰模式-如何穿衣
- 我的字符缓冲输入流(装饰设计模式)
- javaWeb笔记(二) 装饰者模式 以及我的理解
- 我的设计模式-装饰(Decorator)、代理(Proxy)
- 从装饰者模式出发:我理解的动态代理
- 你问我爱你有多深,源码代表我的心
- 我也大话设计模式--装饰模式
- ArcGIS Engine中的数据访问
- 简说linux内核编译(简单却很实用)
- Trac
- Qt OpenGL教程
- 该网马利用了Flash插件
- 明月如何代表我的心 -- 装饰模式
- OSGi 框架事件
- SOCKET 常用函数的返回值分析
- Asp.Net 301重定向的实现(SEO友好,有利于PR值)
- visual c++编程中的两个问题及解决办法
- 关于万向节死锁(Gimbal Lock)
- How to use MySql with Linq to SQL
- 端口占用
- 在没装jdk的电脑上运行jar