zoukankan      html  css  js  c++  java
  • 设计模式----代理模式(Proxy)

    为还有一个对象提供一个替身或占位符以控制对这个对象的訪问

    代理模式的组成:

    主题接口(Subject)提取真正主题与代理的公共方法,让使用真正主题的地方也能用代理取代。

    真正主题(RealSubject)真正处理请求的类。

    代理(Proxy)真正主题的代理类,请求方通过调用代理对象间接调用真正主题。

    代理模式的简单样例

    (主题接口类)Subject.java

    package xu.neng.Proxy;
    
    public interface Subject {
    	public void request();
    }
    

    (正真主题类)RealSubject.java

    package xu.neng.Proxy;
    
    public class RealSubject implements Subject{
    	@Override
    	public void request() {
    		System.out.println("竟敢调用我!!!");
    	}
    }
    

    (代理类)Proxy.java

    package xu.neng.Proxy;
    
    //必须和被代理对象继承统一接口
    public class Proxy implements Subject {
    	RealSubject realSubject;
    
    	public Proxy() {
    		this.realSubject = new RealSubject();
    	}
    
    	// 从构造方法中传入被代理的对象
    	public Proxy(RealSubject realSubject) {
    		this.realSubject = realSubject;
    	}
    
    	// 调用方法
    	@Override
    	public void request() {
    		realSubject.request();
    	}
    }
    

    (測试类,即Client)Test.java

    package xu.neng.Proxy;
    
    /**
     * 測试代理模式。(相当于UML图中的Client)
     * 
     * @author neng
     * 
     */
    public class Test {
    	public static void main(String[] args) {
    		// 我想调用RealSubject出来玩玩
    		Proxy proxy = new Proxy(new RealSubject());
    		proxy.request();
    	}
    }
    


    代理模式的应用:


    iOS开发中经常使用。代理模式更像是一种思想,通过中间手段来控制正真对象的訪问,同一时候还能够做一些包装。

    防火墙代理:控制网络资源的訪问、保护主题免于坏客户的侵害。
    智能引用代理:当主题被引用时,能够进行额外的动作。如进行引用计数等。
    缓存代理:为开销大的运算结果提供暂时存储。同意多个客户共享结果,以降低计算或网络延迟。(本质上还是额外做其它事情)
    同步代理:多线程时,为主题提供安全的訪问。
    写入时复制代理:用来控制(延迟)对象的复制,直到客户真的须要为止。


    參考一篇非常有意思的文章:http://yangguangfu.iteye.com/blog/815787


    转载请注明出处:http://blog.csdn.net/xn4545945  



  • 相关阅读:
    kong插件Prometheus+grafana图形化展示
    FTP服务—三种登录类型的配置方法
    [Kong] basic-auth基本认证及ACL鉴权
    centos7 U盘安装及Raid划分的完整流程
    [Kong] key-auth实现对API请求的密钥认证
    修改gitlab默认的nginx
    gitlab配置邮箱服务
    gitlab部署及汉化
    kong配置upstream实现简单的负载均衡
    mybaties只能驼峰映射,怎么可能,虐渣渣。(springboot)
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/3796829.html
Copyright © 2011-2022 走看看