欢迎来到天天文库
浏览记录
ID:12473445
大小:108.00 KB
页数:11页
时间:2018-07-17
《设计模式之结构型模式二》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、软件英才网软件行业驰名招聘网站设计模式之结构型模式二结构型模式: 装饰模式: 动态地给一个对象添加一些额外的职责。优点: 把类中的装饰功能从类中搬移出去,这样可以简化原有的类。有效地把类的核心功能和装饰功能区分开了。 已经开发完毕的对象,后期由于业务需要,对旧的对象需要扩展特别多的功能,这时候使用给对象动态地添加新的状态或者行为(即装饰模式)方法,而不是使用子类静态继承 装饰模式,给一个对象动态添加额外职责,这些职责需要由用户决定加入的方式和时机。装饰模式提供了“即插即用”的方式,在运行期间决定何时增加何种功能。就增加功
2、能来说,装饰模式比生成子类更加灵活。 方法:1,定义一个对象接口Component2,定义一个具体的对象ConcreteComponent有需要请联系我们软件英才网软件行业驰名招聘网站3,定义一个装饰类Decorator4,定义装饰类的具体对象ConcreteDecoratorA等 给ConcreteComponent对象添加职责举例说明: 例如:一幅画,可以直接挂到墙上,也可以加上框架和镶上玻璃后,再挂到墙上。装饰模式结构图: 代码如下:[csharp] viewplaincopyprint?1.//Compone
3、nt 类 有需要请联系我们软件英才网软件行业驰名招聘网站1. abstract class Component 2. { 3. public abstract void Operation(); 4. 5. } 6. //ConcreteComponent 类 7. class ConcreteComponent : Component 8. { 9. public override void Operation() 10. { 11. Console.WriteLi
4、ne("具体对象的操作"); 12. 13. } 14. } 15. //Decorator 类 16. abstract class Decorator : Component 17. { 18. protected Component component; 19. public void SetComponent(Component component) 20. { 21. this.component = component; 22. 23.
5、} 24. public override void Operation() 25. { 26. if (component != null) 27. { 28. component.Operation(); 29. 30. } 31. } 32. 33. } 34. class ConcreteDecoratorA : Decorator 35. { 36. private string added
6、State; 37. public override void Operation() 38. { 39. base .Operation(); 40. addedState = "new state"; 41. Console.WriteLine("具体装饰对象A的操作"); 42. 43. } 有需要请联系我们软件英才网软件行业驰名招聘网站1. } 2. class ConcreateDecoratorB:Decorator 3.
7、{ 4. public override void Operation() 5. { 6. base.Operation(); 7. AddedBehavior(); 8. Console.WriteLine("具体装饰对象B的操作"); 9. 10. } 11. private void AddedBehavior() 12. { 13. } 14. } 外观模式 为子系统中的一组接口提供一个一致的界面,
8、此模式定义了一个高层接口,这个接口使得这一子类系统更加容易使用。 外观类,它需要了解所有的子系统的方法和属性,进行组合,以备外界调用(将子类的方法和属性组合到外观类)举例说明: 例如:我们拨打10086,可以办理,彩铃,手机报,全时通等业务(子对象),而1
此文档下载收益归作者所有