设计模式—代理模式

作者: HJXANDHMR | 来源:发表于2016-06-06 18:20 被阅读173次

    今天我们来学习一种结构型模式,代理模式(Proxy Pattern)。

    模式定义

    给某一个对象提供一个代理,并由代理对象控制对原对象的引用。

    模式结构

    代理模式包含如下角色:

    **AbstractObject: ** 抽象角色
    **ProxyObject: ** 代理角色
    **RealObject: ** 真实角色

    UML图

    代码实现

    AbstractObject.java

    ·``` bash
    /**

    • 抽象角色
      */
      public interface AbstractObject {

      void operation();
      }

    
    ### RealObject.java
    
    ``` bash
    /**
     * 真实角色
     */
    public class RealObject implements AbstractObject{
    
        @Override
        public void operation() {
            System.out.println("RealObject do SomeThing");
        }
    }
    
    

    ProxyObject.java

    /**
     * 代理角色
     */
    public class ProxyObject implements AbstractObject {
    
        private RealObject mRealObject =new RealObject();
    
        @Override
        public void operation() {
            System.out.println("Before operation");
            mRealObject.operation();
            System.out.println("After operation");
        }
    }
    
    

    测试类

    
    public class MyClass {
    
        public static void main(String[] args) {
            AbstractObject abstractObject = new ProxyObject();
            abstractObject.operation();
        }
    }
    
    

    运行结果

    代理模式的优点

    • 代理模式能够协调调用者和被调用者,在一定程度上降低了系 统的耦合度。

    • 远程代理使得客户端可以访问在远程机器上的对象,远程机器 可能具有更好的计算性能与处理速度,可以快速响应并处理客户端请求。

    • 虚拟代理通过使用一个小对象来代表一个大对象,可以减少系 统资源的消耗,对系统进行优化并提高运行速度。

    • 保护代理可以控制对真实对象的使用权限。

    代理模式的缺点

    • 由于在客户端和真实主题之间增加了代理对象,因此 有些类型的代理模式可能会造成请求的处理速度变慢。

    • 实现代理模式需要额外的工作,有些代理模式的实现 非常复杂。

    参考
    http://design-patterns.readthedocs.io/zh_CN/latest/structural_patterns/proxy.html

    相关文章

      网友评论

      本文标题:设计模式—代理模式

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