java代理模式

作者: zhuzhiqiang00 | 来源:发表于2017-12-19 16:35 被阅读35次

    其他设计模式
    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网页时,里面有很大文字和图片,你可以很快的看见所有文字,但图片却是一张张下载后才能看到,那些未打开的图片框,就是通过虚拟代理来替代了真实图片,此时代理存储了真实图片的路径很尺寸。

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

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

    相关文章

      网友评论

        本文标题:java代理模式

        本文链接:https://www.haomeiwen.com/subject/qhabwxtx.html