Java装饰器模式-解析.docVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java装饰器模式-解析

装饰器目的:依然是面向对象的精髓思想,少用继承实现,多用组合。 融合到现实生活中,我们的电脑主板上有许多可以扩展的插槽,但是出厂的时候并没有全部插上器件,就是让我们能够灵活的有选择性的选择自己需要的硬件来组装。装饰器模式正是基于此:一个一个的装饰器,为我们灵活带来了扩展。 装饰器模式和代理模式有点想象,都是AOP思想。但是我觉得用一句通俗的话来解释:代理模式是定死需要被代理的类,通过反射在每个被代理的类的方法上面做文章,而装饰器模式是定死一个个的方法,来处理不同的对象。 所以总结:装饰器是基于对象,而代理模式是基于方法而言的。 都利用的是AOP思想。 开始:-- 接口:车Car。里面只有方法:开车drive(); package decorator; /** * 接口:车。只有一个方法,就是开车 * * @author Administrator * */ public interface Car { void drive(); } 奥迪,宝马,奔驰。都实现了Car这个接口,当然需要Override开车这个方法。 package decorator; /** * 奥迪车类 * * @author Administrator * */ public class AudiCar implements Car { @Override public void drive() { System.out.println(奥迪开走了); } } package decorator; /** * 宝马车类 * * @author Administrator * */ public class BMWCar implements Car { @Override public void drive() { System.out.println(宝马车开走了); } } package decorator; /** * 奔驰车类 * * @author Administrator * */ public class BZCar implements Car { @Override public void drive() { System.out.println(奔驰车开走了); } } 装饰器1:加油、洗车 package decorator; /** * 第一个装饰器:开车前加油,开车后洗车 * * @author Administrator * */ public class Decorator1 implements Car { private Car car; public Decorator1(Car car) { this.car = car; } @Override public void drive() { System.out.println(加油); car.drive(); System.out.println(洗车); } } 装饰器2:检查车辆、保养车子 package decorator; /** * 装饰器2:开车前检查车辆,开车后保养车子 * * @author Administrator * */ public class Decorator2 implements Car { private Car car; public Decorator2(Car car) { this.car = car; } @Override public void drive() { System.out.println(检查车辆); car.drive(); System.out.println(保养); } } 测试: package decorator; public class TestDecorator { public static void main(String[] args) { // 针对三个牌子的车只用某一个装饰器 Car car1 = new Decorator1(new AudiCar());// 奥迪车的装饰器1 car1.drive(); Car car2 = new Decorator1(new BMWCar());// 宝马车的装饰器1 car2.drive(); Car car3 = new Decorator2(new AudiCar());// 奥迪车的装饰器2 car3.drive(); Car car4 = new Decorator2(new BMWCar());// 宝马车的装饰器2

文档评论(0)

haocen + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档