zoukankan      html  css  js  c++  java
  • 对象结构型

    介绍

    * 为其他对象提供一种代理以控制对这个对象的访问
    * 在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用
    

    代理模式的应用

    远程代理:屏蔽对象存在于不同空间的事实;如webservice是一门跨平台的技术,假设使用.net写的服务比java使用,那么就会生成一个java端的代理来供java代码使用
    虚拟代理:存放创建资源开销大的对象;如Hibernate中的load方法的懒加载
    安全代理:通过代理对象代理真是对象,从而控制真是对象的权限
    智能指引:当调用真实对象时,代理处理另外一些事情;如第一次引用持久化对象,会将其存到内存中
    

    参考自书籍《大话设计模式》

    入门案例:

    代码:
    Home:

    public interface Home {
        void get(String packageName);
    }
    

    XiaoMing:

    public class XiaoMing implements Home {
    
        @Override
        public void get(String packageName) {
        System.out.println("接收:" + packageName);
        }
    }
    

    MaMa:

    public class MaMa implements Home {
    
        private XiaoMing xiaoming;
    
        {
            this.xiaoming = new XiaoMing();
        }
    
        @Override
        public void get(String packageName) {
            System.out.println("妈妈代理小明接收包裹");
            xiaoming.get(packageName);
            System.out.println("妈妈代理小明接收完包裹了");
        }
    }
    

    测试:

    public class Main {
        public static void main(String[] args){
    
            /**
             * 模拟场景:
             *    小明在网上买了个女朋友,当天送到,但同时小明今天又约了朋友小强去网吧玩地下城
             *    因为妈妈也是这个家的成员,所以傻乎乎的快递员就同意让妈妈签收了
             *    这时,妈妈就充当代理(proxy)这个角色,来去代替小明接收这个网购的女朋友,然后交给小明
             */
    
            String packageName = "女朋友";
    
            MaMa maMa = new MaMa();
            maMa.get(packageName);
    
            /**
             * output:
             *  妈妈代理小明接收包裹
             *  接收:女朋友
             *  妈妈代理小明接收完包裹了
             */
        }
    }
    
  • 相关阅读:
    SQL CHECKOUT
    Adobe CS4 " Licensing for this product has expired " FIX!!!
    sizeof()用法汇总
    Command
    EXP_FULL_DATABASE,IMP_FULL_DATABASE,DBA,CONNECT,RESOURCE
    inet_addr函数处理IP地址需要注意的问题 (转)
    Oracle:外键关联导致数据无法删除
    三范式
    Wireshark界面上展开数据帧
    我的HTML学习记录(三)
  • 原文地址:https://www.cnblogs.com/tandi19960505/p/8164277.html
Copyright © 2011-2022 走看看