zoukankan      html  css  js  c++  java
  • 《大话设计模式》——代理模式

    代理模式应用场景:
    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次说:
    你好

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

  • 相关阅读:
    保留最大的数
    彩色宝石项链
    [leetcode] 403. Frog Jump
    [leetcode] 402. Remove K Digits
    Linux 更改时区、时间
    Linux系统时间同步方法
    mysql 5.7.28 地理位置计算详解
    springboot微服务项目集成为单体
    地理空间数据Geometry在MySQL中使用(一)
    mysql中geometry类型的简单使用
  • 原文地址:https://www.cnblogs.com/yxth/p/7374625.html
Copyright © 2011-2022 走看看