装饰设计模式:
当我们想要对已有的功能进行增强时,可以进行定义类,将已有的作为参数对象传入,基于已有的功能,并提供加强功能----那么定义的类叫做装饰类
--------这样的模式就叫做装饰设计模式
装饰类通常会通过构造函数的接受被装饰的对象,基于被装饰的对象具有的功能进行增强。
例如:
publicclass Demo4 { publicstaticvoid main(String[] args) { Person p = new Person(); p.chifan(); superPerson sp = new superPerson(p); sp.chifan(); } } class Person{ publicvoid chifan() { System.out.println("吃饭"); } } class superPerson{ publicvoid chifan() { System.out.println("开胃酒"); System.out.println("吃饭"); } }
图解:
举例二:
FileReader fr = new FileReader(); //fr.read(); BufferedReader bufr=new BufferedReader(fr); fr.readLine();
图解:
装饰设计模式的好处:
装饰比继承灵活,避免了体系臃肿,降低了类与类之间的关系
装饰类因为增强了已有的对象,具备的功能和已有的是相同的。只不过是提供了更强的功能而已。
所以装饰类和被装饰类是属于统一体系结构的
建议:不要为了获取或实现某一功能而进行继承,这样会造成体系臃肿。
应用:
当我们想要对某一功能进行功能增强时,我们可以用装饰类,当装饰类不符合我们的要求时,将其废用后,不会影响原有的功能,
总结:
使用装饰设计模式的条件:
1、包装类与被包装类要有同样的接口或者有共同的父类
2、被包装类最为参数传递给包装类
相关推荐
在各种必须要满足的约束条件之下,设计出一个最简化的架构是架构师孜孜不倦追求的目标。幸运的是,经过国外高水平的Web开发专家的探索,这样的架构设计已经有了一套行之有效的模式。这些模式都是围绕着REST的思想来...
虽然设计一个好的求解算法更像是一门艺术,而不像是技术,但仍然存在一些行之有效的能够用于解决许多问题的算法设计方法,你可以使用这些方法来设计算法,并观察这些算法是如何工作的。一般情况下,为了获得较好的...
案例教学法是一种行之有效的教学方法,张学东,,本文在对案例和案例教学法的界定的基础上,探索总结了采用案例教学法值得注意的几个问题;归纳了本人采用案例教学法的实践教学经
28.一种行之有效的防错策略:在支付系统中实施防呆设计的实践_V20240128
C#高效编程改进C#代码的50个行之有效的办法( 第2版) 中文版
本文提出一种利用混沌搜索一类组合优化问题最优解的模型 ,并对其进行了理论分析和数值模拟 .与混沌神经网络模型相比 ,本模型避免了模型参数选择的难题 ,具有实现方便 ,寻优效果好的优点 ,为解决一类组合优化问题提供...
改进C#代码的50个行之有效的办法,提高C#编程水平的高质量书籍
淘宝客推广引流技术揭密 分享目前最行之有效的几种方法
设计模式是软件开发的重要组成部分,并且是解决给定问题的行之有效的方法。 在本课程中,您将全面了解行业标准的设计模式,确定在设计和开发软件时通常会遇到的挑战,并在Node.js应用程序中实现解决方案。 随着时间...
第四章:设计的程序与方法 一、接受设计委托二、设计准备阶段三、设计实施与展开四、设计后期管理 设计的程序与方法全文共14页,当前为第1页。 一:接受设计委托 设计项目要有新颖性、独特性。在这一阶段应重点做好...
网店推广几种简单且行之有效的方法
针对某型导弹测试设备电路板故障缺乏行之有效检测方法的现状,设计了某导弹测试设备电路板智能检测系统。首先简单介绍了电路板检测原理,结合该设备电路板的结构和工作特点,建立了某型导弹测试设备电路板故障检测的...
对现代工业行之有效的EDI解决方案.docx
虽然设计一个好的求解算法更像是一门艺术,而不像是技术,但仍然存在一些行之有效的能够用于解决许多问题的算法设计方法,你可以使用这些方法来设计算法,并观察这些算法是如何工作的。一般情况下,为了获得较好的...
首先,要说明的是,这个教程只在...但是经过方法测试和努力,测试了几天都没有一个行之有效的可以在RAID模式下安装2003系统的方法,经过冷静思考和调整思路以后,凭借自己10几年的经验,终于找到了正确的方法。
• 1. 沙箱简介 • 2. 研究动机 • 3. Survive the Tab Closing -- Renderer进程持久化 • 4. Survive the Device Rebooting -- Cache持久化 • 5. Survive the Re-Install – 克隆攻击 • 6. 总结
虽然设计一个好的求解算法更像是一门艺术,而不像是技术,但仍然存在一些行之有效的能够用于解决许多问题的算法设计方法,你可以使用这些方法来设计算法,并观察这些算法是如何工作的。一般情况下,为了获得较好的...
C#高效编程_改进C#代码的50个行之有效的办法(第2版) - 瓦格纳(Bill Wagner).mobi
字符集的设置不当是影响ORACLE数据库汉字显示...本文从实践经验出发,介绍了ORACLE关于字符集的分类、构成及设定方法,分析了ORACLE数据库汉字显示乱码的常见现象及原因,并针对各种现象及原因提出了行之有效的解决办法