• 《大话设计模式》——代理模式


    代理模式应用场景:
    1、远程代理:为一个对象在不同的地址空间提供局部代表。可隐藏对象存在不同地址空间的事实。例如ws在.net中的应用。

    2、虚拟代理:通过代理来存放实例化需要很长时间的真实对象。例如让一个很大的html页面立即展开,可以通过代理设置图片位置为空,先占位打开页面,然后再慢慢加载图片后填充。

    3、安全代理:用来控制真实对象访问时的权限。例如检查真实对象是否有访问权限。

    4、智能指引:指调用真实的对象时,代理处理另外一些事。例如计算真实对象的引用次数。

    代理模式角色:

    1、subject:接口对象。所有类的顶级接口。

    2、realSubject:真实对象。

    3、proxy:代理对象。

    例子:

    subject

    inteface Subject {
        void say();
    }

    realSubject

    public class RealSubject implement Subject{ 
        public void say(){
            System.out.println("你好"); 
        } 
    }

    proxy

    public class Proxy implement Subject{
        private Subject s;
        private static int i;
        public Proxy(SUbject s){
            this.s = s;
        }
    
        public void say(){
            System.out.println("当前已经是第"+(++i)次+"说:");
            s.say();
        }
    }

    客户端

    public static void main(String[] args) {
        Proxy p = new Proxy(new RealSubject());
        p.say();
    }

    执行结果

    当前已经是第1次说:
    你好

    代理模式与装饰模式区别:前者重限制对象,后者重增强对象。

  • 相关阅读:
    Java static 关键字 静态初始化块
    一致性哈希
    Java函数传递方式值传递
    Scala 小练习
    Scala 推荐递归编程
    白话 Scala 控制抽象
    函数柯里化(curry)
    Scala 闭包 closure
    Scala 参数(类型)推断
    xcode配置文件中,Architectures表示的意义
  • 原文地址:https://www.cnblogs.com/yxth/p/7374625.html
Copyright © 2020-2023  润新知