装饰模式之我见
来源:互联网 发布:和健身的女生啪啪 知乎 编辑:程序博客网 时间:2024/04/27 16:30
装饰模式之我见
当我们想对一个对象增加功能时一般的做法是对产生该对象的类进行功能扩展,利用扩展之后的类进行实例化进而达到自己的目的。而装饰模式是动态的给对象增加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活(这种灵活性主要体现在客户端)。
装饰模式的一般做法是:第一步,创建一个基类并基于此类创建两个子类:装饰对象类和装饰抽象类,装饰对象类主要用来实例化被装饰的对象(其自身可以包含一些特定功能),装饰抽象类用来产生包含扩展功能的子类。第二步,组织需要添加的功能使其包含在装饰抽象类的子类中。第三步,在客户端利用多态性为装饰对象进行动态添加新功能。(在整个过程中语言的继承和多态的特性是前提保证)装饰模式的好处是:对于一个类而讲,一些行为功能只有在特殊情况下才能够表现出来,如果为添加这些特殊功能对原有类进行添加字段和功能函数代码只会增加原有类的复杂性,而装饰模式把每个要装饰的功能封装在单独的类中并让这个类包装它所要装饰的对象(这里如何进行包装是需要深入研究的),当需要特殊行为时客户代码就可以在运行时根据需要有选择的,按顺序的为对象添加新功能。这样既可以提高客户端的灵活性又将起装饰作用的功能从原有类中移除,简化了类的设计(单一职责原则),有效地将类的核心职责与装饰功能区分开。
装饰模式是将继承变成了组合。装饰模式比继承要灵活,避免了继承体系的臃肿,而且降低了类与类之间的耦合,装饰类通常和被装饰类具有相同的功能调用,所以两者通常属于同一个类,但与被装饰类相比装饰类具有更强的功能性。
- 装饰模式之我见
- 设计模式之我见--3 装饰模式
- (五)二十三中设计模式之我见--------------装饰模式(DectoratorPattern)
- java模式之我见
- 设计模式之我见
- 工厂模式之我见
- 设计模式之我见
- 模式、框架之我见
- 电子商务模式之我见
- 设计模式之我见
- 设计模式之我见
- 策略模式之我见
- 设计模式 之我见
- 迭代器模式之我见
- 组合模式之我见
- 状态模式之我见
- 代理模式之我见
- 策略模式之我见
- 关于linux0.12文件系统目录大小的一个发现
- android-SQLiteDatabase 和 SQLite 数据库
- 跑猴子命令
- 导出DataSet的数据到Excel中
- 数据存储之sharePreference
- 装饰模式之我见
- 面向对象设计原则详解:依赖倒置原则
- 2003的服务器终端服务器超出最大连接数的解决办法
- 初学设计模式之简单工厂模式(含开篇)
- Linux内核源代码简单分析(如何深入研究源代码)
- android学习笔记(3)---详解申请证书并将Android的工程打包为APK手机应用软件
- MFC学习日记十一:Mfc基于对话框编程之逃跑按钮(第八课)
- SQL Server 建库 建表 添加列 添加,删除主键 SQL脚本 (create,alter,exists ,sysobjects,syscolumns)基础篇
- Monkey 命令