06-代理模式 代理模式

真实类需要实现接口,实现业务方法。
代理类也要实现接口,增强业务方法,比如在执行真实的业务逻辑之前增加日志记录功能等。

package cn.com.test.proxy;

//代理类和真实类都需要实现的接口
interface Bussiness {
    void buy();
    void sell();
}
//测试类
public class ProxyDemo {
    public static void Consumer(Bussiness bussiness){
        bussiness.buy();
        bussiness.sell();
    }

    public static void main(String[] args) {
        System.out.println("=========未使用代理模式------------------");
        Consumer(new RealDo());
        System.out.println("==========使用代理模式------------------");
        Consumer(new ProxyDo(new RealDo()));
    }
}

//真实类,需要实现接口
class RealDo implements Bussiness {
    public void buy() {
        System.out.println("买买买");
    }

    public void sell() {
        System.out.println("卖卖卖");
    }
}

//代理类,需要实现接口
class ProxyDo implements Bussiness {

    private RealDo realObj;

    public ProxyDo() {
    }

    public ProxyDo(RealDo realObj) {
        this.realObj = realObj;
    }

    public void buy() {
        System.out.println("Proxy对象插入进来,取钱了。");
        realObj.buy();
        System.out.println("Proxy对象插入进来,运货回店里。");

    }

    public void sell() {
        System.out.println("整理货物。。。。");
        realObj.sell();
        System.out.println("卖完货了,开始数钱。");

    }
}