java¶¯Ì¬´úÀíÀà
Java¶¯Ì¬´úÀíÀàλÓÚjava.lang.reflect°üÏ£¬Ò»°ãÖ÷ÒªÉæ¼°µ½ÒÔÏÂÁ½¸öÀࣺ
(1)Interface InvocationHandler£º¸Ã½Ó¿ÚÖнö¶¨ÒåÁËÒ»¸ö·½·¨
§public object invoke(Object obj,Method method, Object[] args)
ÔÚʵ¼ÊʹÓÃʱ£¬µÚÒ»¸ö²ÎÊýobjÒ»°ãÊÇÖ¸´úÀíÀ࣬methodÊDZ»´úÀíµÄ·½·¨£¬ÈçÉÏÀýÖеÄrequest()£¬argsΪ¸Ã·½·¨µÄ²ÎÊýÊý×é¡£ Õâ¸ö³éÏó·½·¨ÔÚ´úÀíÀàÖж¯Ì¬ÊµÏÖ¡£
(2)Proxy£º¸ÃÀ༴Ϊ¶¯Ì¬´úÀíÀ࣬×÷ÓÃÀàËÆÓÚÉÏÀýÖеÄProxySubject£¬ÆäÖÐÖ÷Òª°üº¬ÒÔÏÂÄÚÈÝ
protected Proxy(InvocationHandler h)£º¹¹Ô캯Êý£¬ÓÃÓÚ¸øÄÚ²¿µÄh¸³Öµ¡£
static Class getProxyClass (ClassLoader loader, Class[] interfaces)£º»ñµÃÒ»¸ö´úÀíÀ࣬ÆäÖÐloaderÊÇÀà×°ÔØÆ÷£¬interfacesÊÇÕæʵÀàËùÓµÓеÄÈ«²¿½Ó¿ÚµÄÊý×é¡£
static Object newProxyInstance(ClassLoader loader, Class[] interfaces, InvocationHandler h)£º·µ»Ø´úÀíÀàµÄÒ»¸öʵÀý£¬·µ»ØºóµÄ´úÀíÀà¿ÉÒÔµ±×÷±»´úÀíÀàʹÓÃ(¿ÉʹÓñ»´úÀíÀàµÄÔÚSubject½Ó¿ÚÖÐÉùÃ÷¹ýµÄ·½·¨)
ËùνDynamic ProxyÊÇÕâÑùÒ»ÖÖclass£ºËüÊÇÔÚÔËÐÐʱÉú³ÉµÄclass£¬ÔÚÉú³ÉËüʱÄã±ØÐëÌṩһ×éinterface¸øËü£¬È»ºó¸Ãclass¾ÍÐû³ÆËüʵÏÖÁËÕâЩ interface¡£Ä㵱Ȼ¿ÉÒ԰ѸÃclassµÄʵÀýµ±×÷ÕâЩinterfaceÖеÄÈκÎÒ»¸öÀ´Óᣵ±È»£¬Õâ¸öDynamic ProxyÆäʵ¾ÍÊÇÒ»¸öProxy£¬Ëü²»»áÌæÄã×÷ʵÖÊÐԵŤ×÷£¬ÔÚÉú³ÉËüµÄʵÀýʱÄã±ØÐëÌṩһ¸öhandler£¬ÓÉËü½Ó¹Üʵ¼ÊµÄ¹¤×÷
ÔÚʹÓö¯Ì¬´úÀíÀàʱ£¬ÎÒÃDZØÐëʵÏÖInvocationHandler½Ó¿Ú
²Î¼û³ÌÐò Subject.java
²Î¼û³ÌÐò RealSubject.java
²Î¼û³ÌÐò DynamicSubject.java
²Î¼û³ÌÐò Client.java
package com.langsin.dynamicproxy;
//³éÏó½ÇÉ«(֮ǰÊdzéÏóÀ࣬´Ë´¦Ó¦¸ÄΪ½Ó¿Ú)£º
public interface Subject
{
abstract public void request();
}
package com.langsin.dynamicproxy;
//¾ßÌå½ÇÉ«(¾Ö³¤)
public class RealSubject implements Subject
{
public RealSubject()
{
}
public void request()
{
System.out.println("from real subject.");
}
}
package com.langsin.dynamicproxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
//´úÀí´¦ÀíÆ÷(ÃØÊé)
/**
* ¸Ã´úÀíÀàµÄÄÚ²¿ÊôÐÔΪObjectÀ࣬ʵ¼ÊʹÓÃʱͨ¹ý¸ÃÀàµÄ¹¹Ô캯ÊýDynamicSubject(Object obj)¶ÔÆ
Ïà¹ØÎĵµ£º
JAVA¶ÔÏóת»»ÎªXML¸ñʽ
¼òµ¥µÄ²üÊöÏÂÈçºÎ½«JAVA¶ÔÏóת»»ÎªXML¸ñʽ£¬ÏêϸÁ˽âÇë½øÈëhttp://xstream.codehaus.org/tutorial.html
JAVABEAN¶ÔÏó
userInfo.java
private String name;
& ......
¹¹ÔìÆ÷ÊÇΪÁË´´½¨Ò»¸öÀàµÄʵÀý¡£Õâ¸ö¹ý³ÌÒ²¿ÉÒÔÔÚ´´½¨Ò»¸ö¶ÔÏóµÄʱºòÓõ½£ºPlatypus p1 = new Platypus();
¡¡¡¡Ïà·´£¬·½·¨µÄ×÷ÓÃÊÇΪÁËÖ´ÐÐjava´úÂë¡£
¡¡¡¡ÐÞÊηû£¬·µ»ØÖµºÍÃüÃûµÄ²»Í¬
¡¡¡¡¹¹ÔìÆ÷ºÍ·½·¨ÔÚÏÂÃæÈý¸ö·½±ãµÄÇø±ð£ºÐÞÊηû£¬·µ»ØÖµ£¬ÃüÃû¡£ºÍ·½·¨Ò»Ñù£¬¹¹ÔìÆ÷¿ÉÒÔÓÐÈκηÃÎʵÄÐÞÊΣº public, protected ......
¼øÓÚÐí¶àͬѧ¶ÔÕâ¸ömain·½·¨µÄÃÔ»ó£¡ÎÒÕâÀïÌṩһЩÒâ¼û£¬Ï£Íû¶Ô´ó¼ÒÓаïÖú£¡ºÇºÇ£¡
****ÎÒÃÇ˵¼ÓÔØÏÈ£º
JavaµÄÀàÊÇÓõ½²Å¿ªÊ¼¼ÓÔصģ¬²¢ÇÒÔÚÿ¸öÀàµÄ¹¹ÔìÆ÷µ÷ÓÃ֮ǰ£¬ÀàµÄÿ¸öÓò£¨³ÉÔ±±äÁ¿£©¶¼ÒªÊ×Ïȱ»±àÒëÆ÷³õʼ»¯Ò»´Î£¬È»ºó²ÅÂÖµ½¹¹ÔìÆ÷À´¸É»î¶ù¡£µ«ÊÇ£¬Java ......
×î½ü£¬Éî¿ÌµÄÈÏʶµ½£¬ ѧϰ£¬²»½öÒª¶à¿´Ê飬»¹ÒªÊ±²»Ê±µÄ×ܽáһϣº
ÓÃJSP + Servlet + JavaBean¿ª·¢ÏîÄ¿£¬ ÔÒÔΪÊDZȽÏÔã¸âµÄÊ£¬ ÒòΪ£¬JSP Ò³ÃæÖÐ ×ܻᱻǶÈëºÜ¶à java´úÂ룬ÆäʵÎÒÒ»Ö±¾õµÃ£¬¼ÈÈ»ÓÐÁË strutsµÈ±íʾ²ã¿ò¼Ü£¬¾Í²»ÒªÓÃServlet À´×ö¿ØÖÆÆ÷ÁË£¬ ¿ÉÊÇ×î½ü£¬Ã÷°×ÁË£¬ ×Ð ......
Ŀ¼
ÕªÒª ……………………………………………………………………2
ÎÄÏ××ÛÊö ……………………&h ......