代理模式

代理模式跟之前的策略模式,装饰模式差距不大,但是代理模式不能无限递归,比策略模式更加解耦

通过当前对象调用某个方法,同时也调用对象内部属性对象的方法。

个人感觉无需继承也可以,继承了以后替换起来成本比较低

//父类抽象类
abstract class Subject {
    public abstract void Request();
}

//实现类
public class RealSubject extends Subject {
    public void Request(){
        System.out.println("真实的请求");
    }
}
//代理类
public class Proxy extends Subject {
    Subject subject;
    @Override
    public void Request() {
        // TODO Auto-generated method stub
        if(subject==null){
            subject=new RealSubject();
        }
        subject.Request();
    }
}

 

下面是实现

//实现方法,简洁调用
public class Context {
    public static void main(String[] args) {
        Proxy p=new Proxy();
        p.Request();
    }
}

 

posted @ 2018-05-12 21:31  酒皇  阅读(106)  评论(0编辑  收藏  举报