zoukankan      html  css  js  c++  java
  • Java设计模式(10)——结构型模式之代理模式(Proxy)

    一、概述

      概念

      

      UML简图

      

      实际使用的场景示例

    • 如果那个对象是一个是很大的图片,需要花费很长时间才能显示出来,那么当这个图片包含在文档中时,使用编辑器或浏览器打开这个文档,打开文档必须很迅速,不能等待大图片处理完成,这时需要做个图片Proxy来代替真正的图片。
    • 如果那个对象在Internet的某个远端服务器上,直接操作这个对象因为网络速度原因可能比较慢,那我们可以先用Proxy来代替那个对象。

      现实中的例子比如桌面上的快捷方式,我们点击它,它帮我们找到实际应用程序,它就是一个代理了!

      主要角色

      抽象主题角色:代理和真实角色的共同接口,以便于代理

      真实角色

      代理角色

    二、实践

      抽象角色:

    /**
     * 抽象共同接口
     *
     * @author Administrator
     **/
    public abstract class Subject {
        public abstract void method1();
    }

      真实角色:

    /**
     * 真实角色
     *
     * @author Administrator
     **/
    public class RealSubject extends Subject{
        @Override
        public void method1() {
            System.out.println("real subject");
        }
    }

      代理角色:

    /**
     * 代理角色
     *
     * @author Administrator
     **/
    public class ProxySubject extends Subject{
        private Subject subject;
    
        public ProxySubject(Subject subject) {
            this.subject = subject;
        }
    
        @Override
        public void method1() {
            System.out.println("proxy subject");
            subject.method1();
        }
    }

      客户端使用

    /**
     * 客户端
     * @author  Administrator
     **/
    public class Client {
        public static void main(String[] args) {
            RealSubject realSubject = new RealSubject();
            ProxySubject proxySubject = new ProxySubject(realSubject);
            proxySubject.method1();
        }
    }

      // 当然可以根据多态性改变一些定义方式

      

      以上就是我们熟知的静态代理,关于静态代理与动态代理的分析,可以参见之前随笔:http://www.cnblogs.com/jiangbei/p/6828086.html

      

  • 相关阅读:
    阿里在线笔试总结
    JAVA断言使用
    小心人员中的薄弱点
    Ubuntu 12.04.4 LTS下linphone-android编译记录
    Java基础:异常的限制
    Java基础:小知识点
    js正则表达式中和\
    Maven管理下Struts、Hibernate编译过程中配置文件缺失导致的“No result defined for action”和getSession()发生“NullPointerException”的解决办法
    Java基础:final关键字
    Java基础:复用类
  • 原文地址:https://www.cnblogs.com/jiangbei/p/7750324.html
Copyright © 2011-2022 走看看