/** * 书本:《Thinking In Java》 * 功能:动态代理机制 * 文件:SimpleProxyDemo.java * 时间:2015年4月15日21:41:39 * 作者:cutter_point */ package Lesson14TypeInformation; import static net.mindview.util.Print.*; interface Interface { //一个接口提供两个方法 void doSomething(); void somethingElse(String arg); } class RealObject implements Interface {//实现接口 @Override public void doSomething() { print("doSomething"); } @Override public void somethingElse(String arg) { print("somthingElse " + arg); } } class SimpleProxy implements Interface {//实现两个接口之后,在加上了一个变量 private Interface proxied; public SimpleProxy(Interface proxied) { this.proxied = proxied; } public void doSomething() { print("SimpleProxy doSomething"); //先实现自己的功能,然后调用传进来的这个接口的功能 proxied.doSomething(); } public void somethingElse(String arg) { print("SimpleProxy somethingElse " + arg); proxied.somethingElse(arg); } } 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())); //动态代理 } }
我就这么说了,可能是我的理解还不够深,我觉得动态代理就是类的组合的使用,用一个类里面使用了另外一个类作为私有变量,实现各种功能,同时还可以执行代理的那个类的各种功能,可以各种拦截,可以判定到底要不要执行这个成员类的方法,或者是执行那个
输出:
doSomething obj1
somthingElse bonobo obj1
SimpleProxy doSomething obj1
doSomething obj1
SimpleProxy somethingElse bonobo obj1
somthingElse bonobo obj1
原文地址:http://blog.csdn.net/cutter_point/article/details/45786277