208代理模式

46 阅读1分钟

定义

为其他对象提供一种代理以控制对这个对象的访问。

类图

图片1.png

代码

public class ProxyPattern {
    public static void main(String[] args) {
        new RealSubjectProxy().doWork();
    }
}
interface Subject{
    void doWork();
}
class RealSubject implements Subject{

    @Override
    public void doWork() {

    }
}

// 注意;和装饰器模式有些类似,但是代理模式关注的是控制对象访问,装饰器模式关注的是方法增强
class RealSubjectProxy implements Subject{
    private RealSubject subject;
    public RealSubjectProxy(){
        try {
            this.subject = (RealSubject)this.getClass().getClassLoader().
                    loadClass("com.mxy.dp.RealSubject").newInstance();
        }catch(Exception e){
            e.printStackTrace();
        }
    }
    public void connect(){
        System.out.println("建立连接");
    }
    public void log(){
        System.out.println("日志记录");
    }

    @Override
    public void doWork() {
        connect();
        subject.doWork();
        log();
    }
}