设计模式----代理模式

话说代理模式,其实就是一个类想要完成的操作,通过它的好朋友proxy替它完成。那代理模式又分为静态代理和动态代理。
那今天就先来说一说静态代理模式。在大话设计模式中,看到大鸟是这样写的:
一个叫戴笠的男生,想追一个叫娇娇的女生,于是他就想到了一个办法去追求娇娇。就是每次都将自己想要送给娇娇的东西说成他的好朋友卓贾易送的,久而
久之娇娇也就看出来了,就和戴笠在一起了。

然后看完我的感受就是:

                  interface xxxProxy

class Pursuit (卓贾易)                class Proxy (戴笠)   
                 ----→           ←-----     
                 class TheGirl (娇娇) 

实际的设计模型就是:
设计一个 代理接口:
然后 追求者类和代理者类都实现 代理接口
然而并不是两个类一模一样,代理者类中实现的 代理接口的方法中 调用的是 追求者实现的代理接口的方法
代理模式: 为其他对象提供一种代理以控制对这个对象的访问。

以struts2中的ActionProxy为例分析:
代理接口:

public interface Proxy{
    String execute();
    Action getAction();
    ActionInvocation getActionInvocation();
}

真实类:

public class Action implements ActionProxy{
        public String execute(){}
}

代理类:

public class ActionProxy implements  Proxy{
        private Action action;

        public String execute(){
                return action.execute(); 
        }
}

那这样,一个静态的代理模式就基本完成了。但是实际的Struts2中的ActionProxy 用的是DynamicProxy模式,今天呢就暂时先讲一讲静态代理完成Struts2中的ActionProxy吧。
代理模式一般应用场景:
第一:远程代理,也就是为一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象存在于不同地址空间的事实。
例如,当我在一个web应用中,引用struts框架,那我就需要导入一些jar包,然后会在项目中生成一些Library,其实它们就是代理。
第二:虚拟代理,是根据需求创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象。
例如,浏览器就是运用虚拟代理来优化下载的。
第三:安全代理,用来控制真实对象访问时的权限。
第四:智能指引,是指当调用真实的对象时,代理处理另外一些事。
那今后遇到这些场景,就可以运用代理模式,届时我们只需要分析出那个是代理者,那个是追求者即可完成充代理模式了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值