zoukankan      html  css  js  c++  java
  • JAVA设计模式之代理模式

    代理模式:为其它对象提供一种代理以控制对这个对象的访问。

    简单例子:

     1 public interface Subject 
     2 {
     3     public void operate();
     4 }
     5 
     6 public class RealSubject implements Subject 
     7 {
     8     public void operate() 
     9     {
    10         System.out.println("Real Operation.");
    11     }
    12 }
    13 
    14 public class Proxy implements Subject
    15 {
    16     private Subject subject;
    17     
    18     Proxy(Subject subject)
    19     {
    20         this.subject = subject;
    21     }
    22 
    23     public void operate() 
    24     {
    25         doBefore();
    26         subject.operate();
    27         doAfter();
    28     }
    29     
    30     public void doBefore()
    31     {
    32         System.out.println("Before ...");
    33     }
    34     
    35     public void doAfter()
    36     {
    37         System.out.println("After ...");
    38     }
    39 }
    40 
    41 public class Test 
    42 {
    43     public static void main(String[] args)
    44     {
    45         Subject subject = new RealSubject();
    46         Subject proxy = new Proxy(subject);
    47         proxy.operate();
    48     }
    49 }

    代理模式的应用形式:

    (1)远程代理(Remote Proxy) -可以隐藏一个对象存在于不同地址空间的事实。也使得客户端可以访问在远程机器上的对象,远程机器可能具有更好的计算性能与处理速度,可以快速响应并处理客户端请求。

    (2)虚拟代理(Virtual Proxy) – 允许内存开销较大的对象在需要的时候创建。只有我们真正需要这个对象的时候才创建。

    (3)写入时复制代理(Copy-On-Write Proxy) – 用来控制对象的复制,方法是延迟对象的复制,直到客户真的需要为止。是虚拟代理的一个变体。

    (4)保护代理(Protection(Access) Proxy) – 为不同的客户提供不同级别的目标对象访问权限。

    (5)缓存代理(Cache Proxy) – 为开销大的运算结果提供暂时存储,它允许多个客户共享结果,以减少计算或网络延迟。

    (6)防火墙代理(Firewall Proxy) – 控制网络资源的访问,保护主题免于恶意客户的侵害。

    (7)同步代理(Synchronization Proxy) – 在多线程的情况下为主题提供安全的访问。

    (8)智能引用代理(Smart Reference Proxy) - 当一个对象被引用时,提供一些额外的操作,比如将对此对象调用的次数记录下来等。

    (9)复杂隐藏代理(Complexity Hiding Proxy) – 用来隐藏一个类的复杂集合的复杂度,并进行访问控制。有时候也称为外观代理,这不难理解。复杂隐藏代理和外观模式是不一样的,因为代理控制访问,而外观模式只提供另一组接口。

    参考资料:http://blog.csdn.net/jackiehff/article/details/8621517

  • 相关阅读:
    【转】构建高性能WEB站点之 吞吐率、吞吐量、TPS、性能测试
    【计算机二级Java语言】卷015
    【计算机二级Java语言】卷014
    【计算机二级Java语言】卷013
    【计算机二级Java语言】卷012
    【计算机二级Java语言】卷011
    【计算机二级Java语言】卷010
    【计算机二级Java语言】卷009
    【计算机二级Java语言】卷008
    【计算机二级Java语言】卷007
  • 原文地址:https://www.cnblogs.com/huoxiayu/p/5615869.html
Copyright © 2011-2022 走看看