2004-10-28׫д
¶ÁGlobus Toolkit±à³ÌÎĵµÊ±£¬ÀïÃæÔÚʵÏÖoperation providerʱÌáµ½ÁËdelegationģʽ¡£ GOFµÄÉè¼ÆÄ£Ê½ÀïºÃÏñûÓÐÕâ¸öģʽ£¬»¹ºÃÍøÉÏÕÒµ½ÁËÏà¹ØµÄÎĵµ¡£·ÒëÈçÏ£º
ίÍÐģʽ:£¨Ó¦¸Ã·Òë³ÉίÍаɣ¬Èç¹û·Òë³É´úÀíÈÝÒ׺Íproxyģʽ»ìÏý£© ίÍÐģʽÊÇÒ»ÖÖ¼¼Êõ,Ò»¸ö¶ÔÏóÔÚÍâ½çÀ´¿´ºÃÏñʵÏÖÁËһЩÐÐΪ,µ«Êµ¼ÊÉÏÊÇίÍиøÏà¹ØµÄÆäËûÀàÀ´ÊµÏÖÐÐΪµÄ.ÔÚ²»¿ÉÒÔʹÓü̳Ð,¶ø²ÉÓþۺÏʱ,±ØÐëʹÓÃÕâÖÖ¼¼Êõ.
Ò»¸ö¼òµ¥µÄjavaÀý×Ó£º Õâ¸öÀý×ÓÖÐ,CÓµÓе÷ÓÃAÖÐf()ºÍg()µÄ²å¿Ú.¿´ÆðÀ´CºÃÏñÓÐAµÄ¹¦ÄÜ.
class A { void f() { system.out.println("A: doing f()"; } void g() { system.out.println("A: doing g()"; } } class C { // delegation A a = new A(); void f() { a.f(); } void g() { a.g(); } // normal attributes X x = new X(); void y() { /* do stuff */ } } void main() { C c = new C(); c.f(); c.g(); }
ÁíÒ»¸ö¸´ÔÓЩµÄjavaÀý×Ó. ʹÓýӿÚ+ίÍпÉÒÔÌá¸ß³ÌÐòÁé»îÐÔ,ºÍÀàÐ͵ݲȫÐÔ.Õâ¸öÀý×ÓÖÐ,C´úÀíÁËA,B¶þÕßÖ®Ò».C¿ÉÒÔÔÚA,BÖ®¼äÇл».ÓÉÓÚA,B¶¼±ØÐëͨ¹ýʵÏÖ½Ó¿ÚÒÔʵÏÖ¹¦ÄÜ,Õâ¾ÍÌá¸ßÁËÁËÀàÐͰ²È«ÐÔ.×÷ΪÕÛÖÐ,µ±È»Ò²ÐèҪд¸ü¶àµÄ´úÂë.
interface I { void f(); void g(); } class A implements I { void f() { system.out.println("A: doing f()"; } void g() { system.out.println("A: doing g()"; } } class B implements I { void f() { system.out.println("B: doing f()"; } void g() { system.out.println("B: doing g()"; } }
class C implements I { // delegation I i = new A(); void f() { i.f(); } void g() { i.g(); } // normal attributes void toA() { i = new A(); } void toB() { i = new B(); } } void main() { C c = new C(); c.f(); c.g(); }
ȱµã:Õâ¸öģʽÊǵäÐ͵ÄÎþÉüÐÔÄÜÌá¸ß³éÏó³ÌÐòµÄÇåÎú³Ì¶È. (»òÕß˵Ìá¸ß´úÂë¿É¶ÁÐÔ)
|