美文网首页大数据程序员
设计模式笔记(13)--代理模式

设计模式笔记(13)--代理模式

作者: 球球球球笨 | 来源:发表于2018-06-06 08:29 被阅读5次

    代理模式

    GOF对于代理模式的定义是:“为其他对象提供一种代理以控制对这个对象的访问”。

    直接上代码

    package Proxy;
    
    public abstract class Subject {
        public abstract void Request();
    }
    
    package Proxy;
    
    public class RealSubject extends Subject{
        @Override
        public void Request() {
            // TODO Auto-generated method stub
            System.out.println("the real request");
        }
    }
    
    
    package Proxy;
    
    public class Proxy extends Subject{
    
        private RealSubject realsubject;
        public Proxy()
        {
            realsubject = new RealSubject();
        }
        @Override
        public void Request() {
            // TODO Auto-generated method stub
            realsubject.Request();
        }
        
    }
    
    package Proxy;
    
    
    public class client {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Proxy proxy = new Proxy();
            proxy.Request();
        }
    
    }
    

    可以看出,实际进行工作的是RealSubject类的方法,代理类作为桥梁对客户端隐藏了RealSubject类的存在,也就是说当RealSubject不希望客户端知晓自己的存在时,就可以通过代理的方式去完成一些操作。


    应用代理模式对象时,代理对象与被代理对象之间是紧耦合的关系,所以在实际应用中,如果有其他可完成工作的更可靠的方式,一般不选择代理模式。

    代理模式一般适用于以下情况:

    1. 当需要为一个对象在不同的地址空间提供局部的代表时
    2. 当需要创建开销特别大的对象 时。
    3. 当需要控制对原始对象的访问时
    4. 当需要在访问对象时执行一些附加操作时,比如可通过代理对象计算访问实际对象的次数。

    相关文章

      网友评论

        本文标题:设计模式笔记(13)--代理模式

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