首页 > 代码库 > 装饰模式
装饰模式
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 }
装饰模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。