设计模式-代理模式01
2017-10-16 10:56
183 查看
初识代理模式,个人理解为被代理对象和使用者之间的一个媒介的存在。常说的的中介就是如此。
java代理模式使用场景:当我们需要记录车辆的行驶时间
我们开始分析,创建行为接口Moveable,行驶方法move(),然后开始创建汽车类Car,通过让汽车类Car实现Moveable来达到目的:
传统做法中,我们只需要在汽车行驶阶段前后获取时间,然后使用汽车行驶结束的时间-开始时间就得到目的。但是这么做系统升级,假如需要添加一个日志功能,记录公里数的功能。代码冗余高,程序臃肿。
换一个思路,使用(静态)代理:
1:继承方式实现:创建Car2类继承Car调用super.move()方法然后在该方法前后来扩展系统功能。通过Car2对象调用move()方法即可。
2:聚合方式实现:创建Car3类,通过将Car类的对象作为属性传入Car3中,然后调用car,move()方法之后同上来实现升级。通过实例一个Car3传入一个Car对象来调用move()方法。
两种代理方式均实现的升级系统的目的。但是继承方式会出现一个严重问题就是Java的单继承机制决定了当我们每升级一次系统,增加一个功能的时候我们就需要多创建一个类。并且对记录日志,公里数等功能的灵活性控制上很弱。相反聚合代理方式我们可以通过创建CarLog,CarTimeLength类,实现Moveable接口,通过将功能模块化来灵活调用。
相关文章推荐
- 设计模式01-代理模式(静态代理)
- 设计模式-01.代理、通知、KVO对比
- 【设计模式】动态代理Proxy_01
- 设计模式——代理模式
- 设计模式-代理
- 通俗易懂系列 | 设计模式(四):代理模式
- 设计模式学习之代理模式(二)--CGLIB实现对Class动态代理
- 设计模式--代理模式--Java实现
- [设计模式]Proxy代理模式
- 设计模式01之单例模式
- [设计模式学习笔记]PROXY(代理)
- 设计模式---代理模式
- 代理模式设计只能内网访问线上数据库
- 【设计模式】动态代理Proxy_03
- OC基础—代理模式设计
- 设计模式系列之六:代理模式
- 设计模式详解之代理模式
- 设计模式C++实现(8)——代理模式
- 设计模式(结构型模式) ----- 代理模式
- 设计模式——代理模式