java¶¯Ì¬´úÀí
¶¯Ì¬´úÀíÊÇÖ¸¿Í»§Í¨¹ý´úÀíÀàÀ´µ÷ÓÃÆäËü¶ÔÏóµÄ·½·¨
¶¯Ì¬´úÀíʹÓó¡ºÏ:
•
Ô¶³Ì·½·¨µ÷ÓÃ(RMI)
•
1.´´½¨Ò»¸öʵÏÖ½Ó¿ÚInvocationHandlerµÄÀ࣬Ëü±ØÐëʵÏÖinvoke·½·¨
2.´´½¨±»´úÀíµÄÀàÒÔ¼°½Ó¿Ú
3.ͨ¹ýProxyµÄ¾²Ì¬·½·¨
newProxyInstance(ClassLoader loader, Class[] interfaces, InvocationHandler h) ´´½¨Ò»¸ö´úÀí
4.ͨ¹ý´úÀíµ÷Ó÷½·¨
²Î¼û³ÌÐòVectorProxy.java
package com.langsin.dynamicproxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.List;
import java.util.Vector;
public class VectorProxy implements InvocationHandler
{
private Object proxyobj;
public VectorProxy(Object obj)
{
proxyobj = obj;
}
public static Object factory(Object obj)
{
Class<?> cls = obj.getClass();
return Proxy.newProxyInstance(cls.getClassLoader(),
cls.getInterfaces(), new VectorProxy(obj));
}
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable
{
System.out.println("before calling " + method);
if (args != null)
{
for (int i = 0; i < args.length; i++)
{
System.out.println(args[i] + "");
}
}
Object object = method.invoke(proxyobj, args);
System.out.println("after calling " + method);
return object;
}
@SuppressWarnings("unchecked")
public static void main(String[] args)
{
List<String> v = (List<String>) factory(new Vector<String>(10));
v.add("New");
v.add("York");
System.out.println(v);
v.remove(0);
System.out.println(v);
}
}
²Î¼û³ÌÐòFoo.java
²Î¼û³ÌÐòFooImpl.java
²Î¼û³ÌÐòFooImpl2.java
²Î¼û³ÌÐòCommonInvocationHandler.java
²Î¼û³ÌÐòDemo.java
package com.langsin.dynamicproxy;
public interface Foo
{
void doAction();
}
package com.langsin.dynamicproxy;
public class FooImpl implements Foo
{
public FooImpl()
{
}
public void doAction()
{
System.out.println("in FooImp1.doActio
Ïà¹ØÎĵµ£º
¶¯Ì¬ÄÚ´æ·ÖÅä
´´½¨ºÍά»¤¶¯Ì¬Êý¾Ý½á¹¹ÒªÇó½øÐж¯Ì¬ÄÚ´æ·ÖÅ䣬¼´³ÌÐòÄܹ»ÔÚÖ´ÐÐʱ»ñµÃ¸ü¶àµÄÄÚ´æ¿Õ¼äÀ´·Åнáµã£¬²¢ÔÚ²»ÐèÒªÕâЩÄÚ´æÊ±ÊÍ·ÅËûÃÇ¡£
Êý¾ÝÁбí¿ÉÒÔÓÃÊý¾Ý½øÐд洢£¬µ«ÊÇÓÃÁ´±í´æ´¢Óм¸¸öºÃ´¦¡£ÔÚÊý¾Ý½á¹¹Òª±íʾµÄÊý¾ÝÔªËØµÄÊýÄ¿ÎÞ·¨Ô¤ÏÈÈ·¶¨µÄÇé¿öÏ£¬Á´±íÄܹ»Ìṩ¸üºÏÀíµÄ¿Õ¼ä·ÖÅä¡£Á´±íÊǶ¯Ì¬µÄ£¬ËùÒÔÆä³¤¶È ......
ת×Ô http://www.bjtarena.com/html/2010/4/1058.htm
ºÜ¶àÅóÓÑÔÚÉîÈëµÄ½Ó´¥JavaÓïÑÔºó¾Í»á·¢ÏÖÕâÑùÁ½¸ö´Ê£º·´Éä(Reflection)ºÍÄÚÊ¡(Introspector)£¬¾³£¸ã²»Çå³þÕâµ½µ×ÊÇÔõô»ØÊ£¬ÔÚʲô³¡ºÏÏÂÓ¦ÓÃÒÔ¼°ÈçºÎʹÓã¿
¡¡¡¡·´Éä
¡¡¡¡Ïà¶Ô¶øÑÔ£¬·´Éä±ÈÄÚÊ¡¸üÈÝÒ×Àí½âÒ»µã¡£ÓÃÒ»¾ä±È½Ï°×µÄ»°À´¸ÅÀ¨£¬·´Éä¾ÍÊÇÈÃÄã¿ÉÒÔͨ¹ýÃû³ÆÀ ......
¼øÓÚÐí¶àͬѧ¶ÔÕâ¸ömain·½·¨µÄÃÔ»ó£¡ÎÒÕâÀïÌṩһЩÒâ¼û£¬Ï£Íû¶Ô´ó¼ÒÓаïÖú£¡ºÇºÇ£¡
****ÎÒÃÇ˵¼ÓÔØÏÈ£º
JavaµÄÀàÊÇÓõ½²Å¿ªÊ¼¼ÓÔØµÄ£¬²¢ÇÒÔÚÿ¸öÀàµÄ¹¹ÔìÆ÷µ÷ÓÃ֮ǰ£¬ÀàµÄÿ¸öÓò£¨³ÉÔ±±äÁ¿£©¶¼ÒªÊ×Ïȱ»±àÒëÆ÷³õʼ»¯Ò»´Î£¬È»ºó²ÅÂÖµ½¹¹ÔìÆ÷À´¸É»î¶ù¡£µ«ÊÇ£¬Java ......
×÷Ϊһ¸öJava³ÌÐòÔ±£¬ÎÒÃdz£³£»áÆÄ¸Ð×ÔºÀµØËµ£º½ðÈÚÐÐÒµµÄ´óϵͳһ°ã¶¼ÊÇÓÃJavaдµÄ¡£ÓÐÌ«¶àÀíÓÉÈÃÎÒÃÇÏàÐÅ£¬JavaÔÚÆóÒµ¼¶Ó¦ÓÃÕâ¿é£¬ÆðמÙ×ãÇáÖØµÄ×÷Óá£È»¶ø£¬ÊÂʵ¹ûÕæÈç´ËÂ𣿽ðÈÚÐÐÒµ»òÐíÊÇÄÇÑù£¬¿ÉÊÇÏñGoogle¡¢AmazonÕâÑùµÄ´óÐÍÍøÕ¾ÄØ£¿Ãæ¶ÔÕâÑùµÄÒÉÎÊ£¬ÔÚ·Ö²¼Ê½Ó¦Óá¢CORBA¡¢JINI¡¢J2EE¡¢Íø¸ñºÍSOAÁìÓò£¬ÓÐ×Å10¶àÄê¾ ......