码迷,mamicode.com
首页 > 其他好文 > 详细

代理模式

时间:2017-08-01 19:19:25      阅读:89      评论:0      收藏:0      [点我收藏+]

标签:system   strong   logs   pen   需要   如何   静态代理   tar   额外   

代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.
这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法

一.静态代理

技术分享
interface IUserDao {
    void save();
}
class UserDao implements IUserDao {
    public void save() {
        System.out.println("----已经保存数据!----");
    }
}

class UserDaoProxy implements IUserDao{
    //接收保存目标对象
    private IUserDao target;
    public UserDaoProxy(IUserDao target){
        this.target=target;
    }

    public void save() {
        System.out.println("开始事务...");
        target.save();//执行目标对象的方法
        System.out.println("提交事务...");
    }
}
View Code

静态代理总结:
1.可以做到在不修改目标对象的功能前提下,对目标功能扩展.
2.缺点:

  • 因为代理对象需要与目标对象实现一样的接口,所以会有很多代理类,类太多.同时,一旦接口增加方法,目标对象与代理对象都要维护.

如何解决静态代理中的缺点呢?答案是可以使用动态代理方式

 

二.动态代理

 

代理模式

标签:system   strong   logs   pen   需要   如何   静态代理   tar   额外   

原文地址:http://www.cnblogs.com/liandy0906/p/7269703.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!