首页 > 其他 > 详细

装饰模式

时间:2017-04-15 11:49:59      阅读:260      评论:0      收藏:0      [点我收藏+]

1、我的个人理解,会根据不同时期有不同的理解

理解一:装饰模式给我的理解就是对一个对象进行层层包装,而每一次包装都是在上一层的基础上进行,而不是从然来没有进行任何包装的对像开始的

2、定义:动态的给一个对象添加一些额外的职责,就是增加功能来说,装饰模式比生成子类更为灵活。

3、以对人类进行装饰为例,具体代码如下:

1)创建人类

 1  //人类
 2     class person
 3     {
 4         public person() { }
 5         private string name;
 6         public person(string name)
 7         {
 8             this.name = name;
 9         }
10         public virtual void Show() 
11         {
12             Console.WriteLine("装扮的{0}",name);
13         }
14     }

2)用于装饰人类的类,他要去继承人类

 1 class Finery : person
 2     { 
 3        //将人类做为属性
 4         protected person component;
 5         //打扮
 6         public void Decorate(person component) {
 7             this.component = component;
 8         }
 9         //重写show方法
10         public override void Show()
11         {
12             if (component != null) {
13                 component.Show();
14             }
15         }
16     }

3)具体的装饰类,如裤子衣服等

 1 //大T恤去继承这个类
 2     class TShirts : Finery
 3     { 
 4         //重写show方法的同时在里面对基类的show方法进行调用
 5         public override void Show()
 6         {
 7             Console.WriteLine("T恤");
 8             base.Show();
 9         }
10     }
11     class BigTrouser : Finery
12     {
13         public override void Show()
14         {
15             Console.WriteLine("裤子");
16             base.Show();
17         }
18     }

4)客户端代码

 1 //装饰模式:模拟人穿衣服
 2         static void Main(string[] args)
 3         {
 4             //创建一个具体的人
 5             person zhengwei = new person("郑为");
 6             //创建具体要装饰的服装
 7             TShirts ts = new TShirts();
 8             BigTrouser bt = new BigTrouser();
 9 
10             //进行装饰,先穿T恤,再穿裤子
11             ts.Decorate(zhengwei);
12             bt.Decorate(ts);
13 
14             //展示装扮
15             bt.Show();
16             Console.ReadLine();
17         }

 

装饰模式

原文:http://www.cnblogs.com/zhengwei-cq/p/6713584.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!