• 代理模式


    概述

           代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通过引用代理对象来访问真实对象就是代理模式的设计动机。

           生活中的代理很多,如有快递公司通知你去取快递,你可以委托你的朋友去,而你的朋友就是你的代理,此外还有网络上的代理服务器

    模式结构

     subject 抽象角色; 声明被代理对象和代理对象的共同接口

    Proxy 代理角色:代理角色和真实角色实现相同的接口,代理角色内部包含有对真实对象的引用,所以她可以操作真实对象,同时也可以附加其他的操作,相当于对真实对象进行封装。

    RealSubject: 真实角色。它代表着真实对象,是我们最终要引用的对象

    interface Getkd{
        void getkd();
    }
    
    class You implements Getkd{
    
        String name;
        
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        @Override
        public void getkd() {
            // TODO Auto-generated method stub
            System.out.println(getName() + " getkd");
        }
    }
    
    class Friend implements Getkd {
    
        Getkd you;
        public Friend(Getkd you) {
            this.you = you;
        }
        @Override
        public void getkd() {
            System.out.println("取快递前吃饭");
            you.getkd();
            System.out.println("取玩快递买西瓜");
        }
    }
    View Code

    优点

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

          2、 代理对象可以在客户端和目标对象之间起到中介的作用,这样起到了的作用和保护了目标对象的

    缺点

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

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

    五、 模式适用场景

          1、 远程代理:为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。

          2、 虚拟代理:通过使用过一个小的对象代理一个大对象。这样就可以减少系统的开销。

          3、 保护代理:用来控制对真实对象的访问权限。

    六、 模式总结

          1、代理模式是通过使用引用代理对象来访问真实对象,在这里代理对象充当用于连接客户端和真实对象的中介者。

          2、代理模式主要用于远程代理、虚拟代理和保护代理。其中保护代理可以进行访问权限控制。

  • 相关阅读:
    闭包
    正则的理解
    正则
    Date对象
    math对象
    js异步
    dom事件
    事件对象-2
    事件对象
    函数作用域
  • 原文地址:https://www.cnblogs.com/whesuanfa/p/7407304.html
Copyright © 2020-2023  润新知