java代理模式

其他设计模式
java单例模式
java建造者模式
java策略模式
java代理模式
java观察者模式
java适配器模式
java外观模式

生活中的代理模式

经典剧《武林外传》中,有一集是秀才让小六代其求婚,当播放到最后片段,剧中,郭芙蓉对吕秀才狠狠地说:“吕秀才,是你让小六向我求婚的吧?”。
“造物弄人!”吕秀才惨惨地答道,“这只是一个玩笑”
“哦!。。。玩笑!”郭芙蓉冷笑地说:“我杀了你!”
秀才速奔出去,郭芙蓉口中叫着“你给我站住”,跟着跑了出去。
吕秀才让小六代其向郭芙蓉求婚,这就是代理模式!

Proxy.jpg

秀才让小六代其求婚实例讲解

步骤1: 创建抽象对象接口(Subject):声明吕秀才(真实对象)需要让燕小六(代理对象)帮忙做的事(求婚)

public interface Subject {
    public void  request();
}

步骤2: 创建真实对象类(RealSubject),即“吕秀才”

public class RealSubject implements Subject{
    @Override
    public void request() {
        System.out.print("芙蓉妹妹,嫁给我");
    }
}

步骤3:创建代理对象类(Proxy),即“燕小六”,并通过代理类创建真实对象实例访问其方法

public class Proxy implements Subject{
    RealSubject realSubject;
    @Override
    public void request() {
        if (realSubject==null){
            realSubject=new RealSubject();
        }
        realSubject.request();
    }
}

步骤4:客户端调用

    public static void main(String[]args) {
        Proxy proxy=new Proxy();
        proxy.request();
    }
代理模式应用

第一种 远程代理,也就是为一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象存在于不同地址空间的事实。
例如:当我在应用程序项目中加入一个web引用,引用一个WebService,此时项目中会生成一个WebReference的文件夹和一些文件,它们就是代理,这就使得客户端程序调用代理就可以解决远程访问的问题

第二种虚拟代理,是根据需要创建开销很大的对象,通过它存放实例化需要很长时间的真实对象。
例如:我们打开一个很大的HTML网页时,里面有很大文字和图片,你可以很快的看见所有文字,但图片却是一张张下载后才能看到,那些未打开的图片框,就是通过虚拟代理来替代了真实图片,此时代理存储了真实图片的路径很尺寸。

第三种安全代理,用来控制真实对象方式时的权限,一般用于对象应该有不同的访问权的时候。

第四种智能指引,是指当调用真实对象时,代理处理另外一些事。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值