设计模式之装饰模式
来源:互联网 发布:看门狗mac版 编辑:程序博客网 时间:2024/06/13 02:44
装饰模式:指在不必改变原类文件和使用继承的情况下动态的扩展一个对象的功能。简单一点说,装饰模式就是动态的给一个对象添加一些额外的职责,即对一个对象进行包装,使其成为一个看着顺眼的整体。即将每个要装饰的功能放在单独的类中,而提供一个类对要装饰的类的对象进行包装。
比如新买的房子,里面什么也没有,想要住进去首先需要装修,添加家电等,这个过程整体可以称为装饰,等最后放到我们眼前的就是一个完整而美观的房子。用代码实现如下:
class House{//构造函数初始化public House(){} private string name;public House(string name){this.name=name;} //定义虚函数Show(),供子类重写public virtual void Show(){console.Writeline("{0}装饰的房子",name);}}class Decoration:House{protected House house;//为变量house赋值public void SetDecoration(House house){this.house=house;}//重写函数Show()public override void Show(){if(house!=null){house.Show();} }}class Bed:Decoration{//方法Show()的重写public override void Show(){console.WriteLine("床");base.Show(); //调用父类的Show()函数}}class Lamp:Decoration{//方法Show()的重写public override void Show(){console.WriteLine("灯");base.Show(); //调用父类的Show()函数}}class TV:Decoration{//方法Show()的重写public override void Show(){console.WriteLine("电视");base.Show(); //调用父类的Show()函数}}
主函数中则是:
House se=new House("小菜");Bedse1=new Bed();Lampse2=new Lamp();TVse3=new TV(); se1.SetDecoration(se);se2.SetDecoration(se1);se3.SetDecoration(se2);se3.Show();
装饰功能的优点是:把类中的装饰功能从类中搬移去除,这样可以简化原有的类,有效的把类的核心职责和装饰功能区分开了,而且可以去除相关类中重复的装饰逻辑。
3 0
- 设计模式之装饰
- 设计模式之装饰
- 设计模式之装饰
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之 装饰模式
- 设计模式之-装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- 设计模式之装饰模式
- thinkphp查询方式where详解
- hadoop下mahout bayes(贝叶斯)算法研究(1)
- NYOJ 289 苹果
- 揭秘乌云网:中国最大的黑客培训基地?
- 跟我一起学windows初高级调试(1) --你为什么要学调试
- 设计模式之装饰模式
- 01串 时间限制:1000 ms | 内存限制:65535 KB 难度:2
- sqoop 1.99 安装配置
- 45 个非常有用的 Oracle 查询语句
- Effective MySQL之深入解析复制技术
- OCP-1Z0-053-200题-109题-510
- 匈牙利命名法
- c++ extern的用法解析
- 微信公众平台开发—初步架构