码迷,mamicode.com
首页 > 其他好文 > 详细

代理模式

时间:2017-08-22 01:47:40      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:网络   服务器   getname   耦合度   pre   close   很多   访问权限   增加   

概述

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

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

模式结构

技术分享

 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、代理模式主要用于远程代理、虚拟代理和保护代理。其中保护代理可以进行访问权限控制。

 

代理模式

标签:网络   服务器   getname   耦合度   pre   close   很多   访问权限   增加   

原文地址:http://www.cnblogs.com/whesuanfa/p/7407304.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!