奋进吧_Robin
2016-08-19 14:08
public static void main(String[] args) {
Car car = new Car();
InvocationHandler h =new TimeHandler(car);
Class<?> cls = car.getClass();
Moveable m = (Moveable) Proxy.newProxyInstance(cls.getClassLoader(), cls.getInterfaces(), h);
InvocationHandler h1 = new LogHandler(m);
Moveable m1 = (Moveable) Proxy.newProxyInstance(cls.getClassLoader(), cls.getInterfaces(), h1);
m1.move();
Car2 car2 = new Car2();
InvocationHandler h2 =new TimeHandler(car2);
Class<?> cls2 = car2.getClass();
Moveable m2 = (Moveable) Proxy.newProxyInstance(cls2.getClassLoader(), cls2.getInterfaces(), h2);
InvocationHandler h3 = new LogHandler(m2);
Moveable m3 = (Moveable) Proxy.newProxyInstance(cls2.getClassLoader(), cls2.getInterfaces(), h3);
m3.move();
}
Car 的部分 实现了 日志的记录,时间的记录,
Car2 的部分 代表其他车辆也可以使用 同样的代理类,
也就是说,我再定义一个火车也是可以用同样的日志代理和时间代理类的。
而聚合代理就不能完成了对吧。我这样理解对嘛?老师们
聚合代理也能完成,聚合方式产生的代理比继承方式更好!所以聚合代理一样可以用同样的日志代理和时间代理类的,具体的可以搜索相关视频哦
模式的秘密---代理模式
54912 学习 · 98 问题
相似问题