14.7动态代理(上)(代理)

2024-10-22  本文已影响0人  陈晓松快点跑

这是一个很简单、很简洁、很棒、很nice的小例子。

代理
这里给出这个例子完全是跟后面的动态代理做对比。


↓↓↓
来本公司干活必须会以下两种技能,
一、void doSomething();
二、void somethingElse(String arg);
↓↓↓

public interface Interface {
    void doSomething();
    void somethingElse(String arg);
}

RealObject类

↓↓↓
RealObject类 纯纯的打工人
↓↓↓

public class RealObject implements Interface {
    @Override
    public void doSomething() {
        System.out.println("RealObject doSomething");
    }

    @Override
    public void somethingElse(String arg) {
        System.out.println("RealObject somethingElse " + arg);
    }
}

SimpleProxy类

↓↓↓
SimpleProxy类像一个贱贱中层领导,就会传个话。还好他不传瞎话。
下面这个SimpleProxy类就是把上面的RealObject类包含在自己的内部,当有人叫SimpleProxy类做事情的时候,SimpleProxy类就叫RealObject类去做。可怜的RealObject类纯纯的打工人。可恶的SimpleProxy类就是个传话的人。SimpleProxy类对不起他拿的工资。降低了社会效率。嗯,就这样。
↓↓↓

public class SimpleProxy implements Interface {

    private Interface proxied;

    public SimpleProxy(Interface proxied) {
        this.proxied = proxied;
    }

    @Override
    public void doSomething() {
        System.out.println("SimpleProxy doSomething");
        proxied.doSomething();
    }

    @Override
    public void somethingElse(String arg) {
        System.out.println("SimpleProxy somethingElse " + arg);
        proxied.somethingElse(arg);
    }
}

main

public class SimpleProxyDemo {

    public static void consumer(Interface iface) {
        iface.doSomething();
        iface.somethingElse("bonobo");
    }

    public static void main(String[] args) {
        consumer(new RealObject());
        consumer(new SimpleProxy(new RealObject()));
    }
}
上一篇 下一篇

猜你喜欢

热点阅读