设计模式-代理模式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接口,通过将功能模块化来灵活调用。

    



原创粉丝点击