设计模式-代理模式01
来源:互联网 发布:iphone 贴图软件推荐 编辑:程序博客网 时间:2024/05/29 04:48
初识代理模式,个人理解为被代理对象和使用者之间的一个媒介的存在。常说的的中介就是如此。
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接口,通过将功能模块化来灵活调用。
阅读全文
0 0
- 设计模式-代理模式01
- 设计模式01-代理模式(静态代理)
- 设计模式--【代理模式】
- 设计模式:代理模式
- 设计模式--代理模式
- 设计模式---代理模式
- 设计模式-代理模式
- 设计模式---代理模式
- 设计模式 代理模式
- 设计模式-【代理模式】
- 设计模式-代理模式
- 设计模式----代理模式
- 设计模式-代理模式
- 设计模式---代理模式
- 设计模式--代理模式
- 设计模式-代理模式
- 设计模式- 代理模式
- 设计模式---代理模式
- HDPCD-Java-复习笔记(14)- lab
- 阿里云服务器ECS安装linux CentOS 6.8教程
- 90、java的IO操作-内存操作流
- 安装 Laravel 框架
- 增加和减少mongodb复制集中的节点
- 设计模式-代理模式01
- 提供选择删除图片
- 决策表
- 关于STM32开发板Nucleo-L053板子不上电运行问题研究
- spring <context:component-scan />及<mvc:annotation-driven />使用说明
- Android应用资源总结七:获取asserts等中的文件
- 91、java的IO操作-打印流
- 谨慎使用多线程中的fork
- 深度学习--采用ReLU解决消失的梯度问题(vanishing gradient problem)