??????飺?????????? ?? java.lang.reflect ???????????? JDK 1.3 ?汾?????? JDK????????????? ????????????????????????????????????÷????????????鷽????????????????????????á???????????????“???”?????????????·?????????????????????????????У?Brian Goetz ??????????????????????ó?????????????? ??????? ??????????????????????????????μ?????

??????????????????????????????? Facade??Bridge??Interceptor??Decorator??Proxy???????????????????? Adapter ?????????????????????????Щ????????????????????????????????????????????£??????????????????????????????????д?????????

????Proxy ??

????Proxy ?????????“stub”??“surrogate”?????????????????????????????????????й????????????????????????RMI?????? Proxy ????????????? JVM ????е??????????????????? JavaBeans ??EJB?????? Proxy ??????????á????????????磻?? JAX-RPC Web ???????? Proxy ????????????????????????????????????У???????????????????????????????????????????????????????????????£????????????????????????? stub ??????????????????????????????????????stub ????????????????????????????????????????????????????????????????????????????????????????????????? RMI??EJB ?? JAX-RPC ???????????e?????????????EJB?????????????EJB ??? Bean?????????????????????????????????????

?????? 5.0 ????? JDK ?У?RMI stub??????????? skeleton???????????? RMI ????????rmic?????????RMI ???????? JDK ????????????????????????????????????? stub?????????????????????????????? skeleton ??????????? JVM ?????? stub ??????? —— ????????????????????????????????? Web ????? JAX-RPC ????????? Web ???????????????????? Web ????????????????????

???????? stub ???????????????????????????????????????????????????Щ?????裬?????????????????????????????????????????????????棬?????????????????????????? stub ???????£????????????????????? JDK 5.0 ?????汾?У?RMI ??????????????????????? stub????? RMI ??????????á???? J2EE ??????????????????? EJB??EJB ?????????????????????interception?????????????????磻????????????????????з?????????е????????·????

??????????????

???????????????????? InvocationHandler ???????嵥 1 ????????t?????????????????????????????????????á?????????t????? Method ?????? java.lang.reflect ???????????б?????????????????????£????????????÷????????? Method.invoke???? ??????????

?????嵥 1. InvocationHandler ???


1.public interface InvocationHandler { 
2. Object invoke(Object proxy?? Method method?? Object[] args) 
3. throws Throwable; 
4. }
 


????????????????????????????t??????????????????????????t????????????????????????????????????????????????????????????????????????????????????п????????????????????й??????????????????????????????嵥 2 ??????????????????????????? Set ?????????? Set ????????????? Object ???????????????? Set ?????

?????嵥 2. ??? Set ???????????


1.public class SetProxyFactory { 
2.public static Set getSetProxy(final Set s) { 
3. return (Set) Proxy.newProxyInstance 
4. (s.getClass().getClassLoader()?? 
5. new Class[] { Set.class }?? 
6. new InvocationHandler() { 
7. public Object invoke(Object proxy?? Method method?? 
8. Object[] args) throws Throwable { 
9. return method.invoke(s?? args); 
10. } 
11. }); 
12. } 
13. }