这是一个很简单、很简洁、很棒、很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()));
}
}