java装饰器模式-解析

java装饰器模式-解析

ID:14042993

大小:37.50 KB

页数:4页

时间:2018-07-25

java装饰器模式-解析_第1页
java装饰器模式-解析_第2页
java装饰器模式-解析_第3页
java装饰器模式-解析_第4页
资源描述:

《java装饰器模式-解析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、装饰器目的:依然是面向对象的精髓思想,少用继承实现,多用组合。融合到现实生活中,我们的电脑主板上有许多可以扩展的插槽,但是出厂的时候并没有全部插上器件,就是让我们能够灵活的有选择性的选择自己需要的硬件来组装。装饰器模式正是基于此:一个一个的装饰器,为我们灵活带来了扩展。装饰器模式和代理模式有点想象,都是AOP思想。但是我觉得用一句通俗的话来解释:代理模式是定死需要被代理的类,通过反射在每个被代理的类的方法上面做文章,而装饰器模式是定死一个个的方法,来处理不同的对象。所以总结:装饰器是基于对象,而代理模式是基于方法而言

2、的。都利用的是AOP思想。开始:-->>1.接口:车Car。里面只有方法:开车drive();packagedecorator;/***接口:车。只有一个方法,就是开车**@authorAdministrator**/publicinterfaceCar{voiddrive();}2.奥迪,宝马,奔驰。都实现了Car这个接口,当然需要Override开车这个方法。packagedecorator;/***奥迪车类**@authorAdministrator**/publicclassAudiCarimplements

3、Car{@Overridepublicvoiddrive(){System.out.println("奥迪开走了");}}packagedecorator;/***宝马车类**@authorAdministrator**/publicclassBMWCarimplementsCar{@Overridepublicvoiddrive(){System.out.println("宝马车开走了");}}packagedecorator;/***奔驰车类**@authorAdministrator**/publicclass

4、BZCarimplementsCar{@Overridepublicvoiddrive(){System.out.println("奔驰车开走了");}}1.装饰器1:加油、洗车packagedecorator;/***第一个装饰器:开车前加油,开车后洗车**@authorAdministrator**/publicclassDecorator1implementsCar{privateCarcar;publicDecorator1(Carcar){this.car=car;}@Overridepublicvoidd

5、rive(){System.out.println("加油");car.drive();System.out.println("洗车");}}1.装饰器2:检查车辆、保养车子packagedecorator;/***装饰器2:开车前检查车辆,开车后保养车子**@authorAdministrator**/publicclassDecorator2implementsCar{privateCarcar;publicDecorator2(Carcar){this.car=car;}@Overridepublicvoidd

6、rive(){System.out.println("检查车辆");car.drive();System.out.println("保养");}}5.测试:packagedecorator;publicclassTestDecorator{publicstaticvoidmain(String[]args){//针对三个牌子的车只用某一个装饰器Carcar1=newDecorator1(newAudiCar());//奥迪车的装饰器1car1.drive();Carcar2=newDecorator1(newBMWC

7、ar());//宝马车的装饰器1car2.drive();Carcar3=newDecorator2(newAudiCar());//奥迪车的装饰器2car3.drive();Carcar4=newDecorator2(newBMWCar());//宝马车的装饰器2car4.drive();Caraudi=newDecorator1(newDecorator2(newAudiCar()));//奥迪车用2个装饰器audi.drive();System.out.println("--------------------

8、");Carbmw=newDecorator2(newDecorator1(newBMWCar()));//宝马车用2个装饰器bmw.drive();System.out.println("--------------------");Carbz=newDecorator1(newDecorator2(newBZCar()));//奔驰车用2个

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。