Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Éè¼ÆÄ£Ê½×ܽá(1)
 
À´Ô´£ºcsdn ·¢²¼ÓÚ£º 2017-6-9
  2736  次浏览      27
 

Éè¼ÆÄ£Ê½×ܽ᣺±¾ÎÄÖ÷Òª½²½âÁË£º½¨ÐÍÉè¼ÆÄ£Ê½£¬ ½á¹¹ÐÍÉè¼ÆÄ£Ê½¡£ÒÔºóÎÄÕ»áÏêϸ½éÉÜÐÐΪÐÍÉè¼ÆÄ£Ê½¡£

  • ´´½¨ÐÍÉè¼ÆÄ£Ê½£º
    • Singleton Pattern£¨µ¥Àýģʽ£©
    • Prototype Pattern£¨Ô­ÐÍģʽ£©
    • Abstract Factory Pattern£¨³éÏ󹤳§Ä£Ê½£©
    • Builder Pattern£¨½¨ÔìÕßģʽ£©
  • ½á¹¹ÐÍÉè¼ÆÄ£Ê½£º
    • Adapter Pattern£¨ÊÊÅäÆ÷ģʽ£©
    • Bridge Pattern£¨ÇŽÓģʽ£©
    • Composite Pattern£¨×éºÏģʽ£©
    • Decorator Pattern£¨×°ÊÎÕßģʽ£©
    • Facade Pattern£¨Íâ¹Ûģʽ£©
    • Flyweight Pattern£¨ÏíԪģʽ£©
    • Proxy Pattern£¨´úÀíģʽ£©
  • ÐÐΪÐÍÉè¼ÆÄ£Ê½£º
    • Chain of Responsibility Pattern£¨Ö°ÔðÁ´Ä£Ê½£©
    • Command Pattern£¨ÃüÁîģʽ£©
    • Interpreter Pattern£¨½âÊÍÆ÷ģʽ£©
    • Iterator Pattern£¨µü´úÆ÷ģʽ£©
    • FMediator Pattern£¨ÖнéÕßģʽ£©
    • Memento Pattern£¨±¸Íü¼ģʽ£©
    • Observer Pattern£¨¹Û²ìÕßģʽ£©
    • State Pattern£¨×´Ì¬Ä£Ê½£©
    • Strategy Pattern£¨²ßÂÔģʽ£©
    • Template Method Pattern£¨Ä£°å·½·¨Ä£Ê½£©
    • Visitor Pattern£¨·ÃÎÊÕßģʽ£©

´´½¨ÐÍÉè¼ÆÄ£Ê½£º

Singleton Pattern£¨µ¥Àýģʽ£©

Òâͼ

±£Ö¤Ò»¸öÀà½öÓÐÒ»¸öʵÀý£¬²¢Ìṩһ¸ö·ÃÎÊËüµÄÈ«¾Ö·ÃÎʵ㡣

ÊÊÓÃÐÔ

µ±ÀàÖ»ÓÐÒ»¸öʵÀý¶øÇÒ¿Í»§¿ÉÒÔ´ÓÒ»¸öÖÚËùÖÜÖªµÄ·ÃÎʵã·ÃÎÊËüʱ¡£

µ±Õâ¸öΨһʵÀýÓ¦¸ÃÊÇͨ¹ý×ÓÀ໯¿ÉÀ©Õ¹µÄ£¬²¢ÇÒ¿Í»§Ó¦¸ÃÎÞÐè¸ü¸Ä´úÂë¾ÍÄÜʹÓÃÒ»¸öÀ©Õ¹µÄʵÀýʱ¡£

½á¹¹

Àý×Ó

iOS£º

[NSUserDefaults standardUserDefaults];

[NSFileManager defaultManager];

[UIApplication sharedApplication];

[NSNotificationCenter defaultCenter];

[UIScreen mainScreen]

Android£º

Applicationapp = this.getApplication();

×¢ÒâÊÂÏî

¿ª·¢ÖÐʹÓõ¥Àýģʽ£¬Óм¸µãҪעÒ⣺

1. Ö»´´½¨Ò»¸öʵÀý£¬²¢ÇÒÖ»Ìṩһ¸öÈ«¾ÖµÄ·ÃÎʵ㣻±ÜÃâ´´½¨¶à¸öʵÀýµÄ¿ÉÄÜ¡£

2. ×ÊÔ´¹²ÏíÇé¿öÏ£¬»ñȡʵÀýµÄ·½·¨±ØÐëÊÊÓ¦¶àÏ̲߳¢·¢·ÃÎÊ¡£

3. Ìá¸ß·ÃÎÊÐÔÄÜ¡£

4. ÀÁ¼ÓÔØ£¨Lazy Load£©£¬ÔÚÐèÒªµÄʱºò²Å±»¹¹Ôì¡£

Prototype Pattern£¨Ô­ÐÍģʽ£©

Òâͼ

ÓÃÔ­ÐÍʵÀýÖ¸¶¨´´½¨¶ÔÏóµÄÖÖÀ࣬²¢ÇÒͨ¹ý¿½±´ÕâЩԭÐÍ´´½¨ÐµĶÔÏó¡£

ÊÊÓÃÐÔ

1.µ±ÒªÊµÀý»¯µÄÀàÊÇÔÚÔËÐÐʱ¿ÌÖ¸¶¨Ê±£¬ÀýÈ磬ͨ¹ý¶¯Ì¬×°ÔØ£»

2.ΪÁ˱ÜÃâ´´½¨Ò»¸öÓë²úÆ·Àà²ã´ÎƽÐеŤ³§Àà²ã´Îʱ£»

3.µ±Ò»¸öÀàµÄʵÀýÖ»ÄÜÓм¸¸ö²»Í¬×´Ì¬×éºÏÖеÄÒ»ÖÖʱ¡£½¨Á¢ÏàÓ¦ÊýÄ¿µÄÔ­ÐͲ¢¿Ë¡ËüÃÇ¿ÉÄܱÈÿ´ÎÓúÏÊʵÄ״̬ÊÖ¹¤ÊµÀý»¯¸ÃÀà¸ü·½±ãһЩ¡£

½á¹¹

²ÎÓëÕߣº

Prototype(Ô­ÐÍ)

¡ª ÉùÃ÷Ò»¸ö¿Ë¡×ÔÉíµÄ½Ó¿Ú¡£

ConcretePrototype(¾ßÌåµÄÔ­ÐÍ)

¡ª ʵÏÖÒ»¸ö¿Ë¡×ÔÉíµÄ²Ù×÷¡£

Client(³¡¾°)

¡ª ÈÃÒ»¸öÔ­ÐͿˡ×ÔÉí´Ó¶ø´´½¨Ò»¸öеĶÔÏó¡£

Àý×Ó

°¢ÅµË¹ÍßÐÁ¸ñÖ÷Ñݵġ¶µÚÁùÈÕ¡·2000ÉÏÓ³¡£Ö÷½Ç½ÐÑǵ±£¬À´Ö®Ê¥¾­£ºÉϵÛÔÚµÚÁùÈÕ´´ÔìÁËÑǵ±¡£

ÔÚ²»Ô¶µÄ½«À´£¬Å£¡¢ÓãÉõÖÁ³èÎï¶¼¿ÉÒÔÈÎÒâ¿Ë¡£¬µ«¿Ë¡ÈËÀàÊÇ·Ç·¨µÄ¡£µ«ÓÐÒ»Ììµ±Ñǵ±-¼ª²¼É­»Øµ½¼Ò£¬È´·¢ÏÖÒ»¸ö¿Ë¡ÈËÈ¡´úÁË×Ô¼º¡£Ëû±»¸Ï³öÁ˼ÒÃÅ£¬¸üÔâµÄÊÇ£¬ÒõıµÄÖÆÔìÕßΪÁËÑÚ¸ÇÕæÏ࣬ÅɳöɱÊÖ׷ɱÑǵ±Ãð¿Ú¡£ÎªÁËÌÓÉú£¬Í¬Ê±Ò²ÎªÁËÖØÐÂÓ®µÃ×Ô¼ºµÄÒ»ÇУ¬Ñǵ±Í¬ÉñÃØµÄÄ»ºó²ß»®ÕßÕ¹¿ªÁË»úÖǵÄÕ½¶·¡£

ÓÅȱµã

Óŵ㣺

ÐÔÄÜÓÅÁ¼¡£Ô­ÐÍģʽÊÇÔÚÄÚ´æ¶þ½øÖÆÁ÷µÄ¿½±´£¬Òª±ÈÖ±½ÓnewÒ»¸ö¶ÔÏóÐÔÄÜºÃºÜ¶à£¬ÌØ±ðÊÇÒªÔÚÒ»¸öÑ­»·ÌåÄÚ²úÉú´óÁ¿µÄ¶ÔÏóʱ£¬Ô­ÐÍģʽ¿ÉÒÔ¸üºÃµØÌåÏÖÆäÓŵ㡣

ȱµã£º

Ìӱܹ¹Ô캯ÊýµÄÔ¼Êø¡£Õâ¼ÈÊÇËüµÄÓŵãÒ²ÊÇȱµã£¬Ö±½ÓÔÚÄÚ´æÖп½±´£¬¹¹Ô캯ÊýÊDz»»áÖ´Ðеġ£Óŵã¾ÍÊǼõÉÙÁËÔ¼Êø£¬È±µãÒ²ÊǼõÉÙÁËÔ¼Êø£¬ÐèÒª´ó¼ÒÔÚʵ¼ÊÓ¦ÓÃʱ¿¼ÂÇ¡£

Simple Factory Pattern£¨¼òµ¥¹¤³§Ä£Ê½£©

GoFÖÐÈÏΪ¼òµ¥¹¤³§Ä£Ê½Êǹ¤³§·½·¨µÄÒ»¸öÌØÀý¡£

½á¹¹

Àý×Ó

ÓÅȱµã

 

Óŵ㣺¼òµ¥£¬½áºÏµ¥Àýģʽ¸ü¼Ó·½±ãºÍ½ÚÊ¡×ÊÔ´¡£

ȱµã£ºÔö¼ÓеIJúƷʱ£¬ÐèÒªÐ޸Ť³§ÀàµÄif¡­elseÂß¼­£¬²»·ûºÏ¿ª±ÕÔ­Ôò¡£

Factory Method Pattern£¨¹¤³§·½·¨Ä£Ê½£©

Òâͼ

¶¨ÒåÒ»¸öÓÃÓÚ´´½¨¶ÔÏóµÄ½Ó¿Ú£¬ÈÃ×ÓÀà¾ö¶¨ÊµÀý»¯ÄÄÒ»¸öÀà¡£Factory Method ʹһ¸öÀàµÄʵÀý»¯ÑÓ³Ùµ½Æä×ÓÀà¡£

ÊÊÓÃÐÔ

1.µ±Ò»¸öÀ಻֪µÀËüËù±ØÐë´´½¨µÄ¶ÔÏóµÄÀàµÄʱºò¡£

2.µ±Ò»¸öÀàÏ£ÍûÓÉËüµÄ×ÓÀàÀ´Ö¸¶¨ËüËù´´½¨µÄ¶ÔÏóµÄʱºò¡£

3.µ±Àཫ´´½¨¶ÔÏóµÄÖ°ÔðίÍиø¶à¸ö°ïÖú×ÓÀàÖеÄijһ¸ö£¬²¢ÇÒÄãÏ£Íû½«ÄÄÒ»¸ö°ïÖú×ÓÀàÊÇ´úÀíÕßÕâÒ»ÐÅÏ¢¾Ö²¿»¯µÄʱºò¡£

½á¹¹

²ÎÓëÕߣº

Product(³éÏó²úÆ·)

¡ª ¶¨Ò幤³§·½·¨Ëù´´½¨µÄ¶ÔÏóµÄ½Ó¿Ú¡£

ConcreteProduct(¾ßÌå²úÆ·)

¡ª ʵÏÖProduct½Ó¿Ú¡£

Creator(³éÏ󹤳§Àà)

¡ª ÉùÃ÷¹¤³§·½·¨,¸Ã·½·¨·µ»ØÒ»¸ö ProductÀàÐ͵ĶÔÏó¡£ CreatorÒ²¿ÉÒÔ¶¨ÒåÒ»¸ö¹¤³§·½ ·¨µÄȱʡʵÏÖ,Ëü·µ»ØÒ»¸öȱʡµÄ ConcreteProduct¶ÔÏó¡£

¡ª ¿ÉÒÔµ÷Óù¤³§·½·¨ÒÔ´´½¨Ò»¸ö Product¶ÔÏó¡£

ConcreteCreator(¾ßÌ幤³§Àà)

¡ª ÖØ¶¨Ò幤³§·½·¨ÒÔ·µ»ØÒ»¸ö ConcreteProductʵÀý¡£

Àý×Ó

ÓÅȱµã

Óŵ㣺

Ê×ÏÈ£¬Á¼ºÃµÄ·â×°ÐÔ£¬´úÂë½á¹¹ÇåÎú¡£Ò»¸ö¶ÔÏó´´½¨ÊÇÓÐÌõ¼þÔ¼ÊøµÄ£¬ÈçÒ»¸öµ÷ÓÃÕßÐèÒªÒ»¸ö¾ßÌåµÄ²úÆ·¶ÔÏó£¬Ö»ÒªÖªµÀÕâ¸ö²úÆ·µÄÀàÃû£¨»òÔ¼Êø×Ö·û´®£©¾Í¿ÉÒÔÁË£¬²»ÓÃÖªµÀ´´½¨¶ÔÏóµÄ¼èÐÁ¹ý³Ì£¬½µµÍÄ£¿é¼äµÄñîºÏ¡£

¹¤³§·½·¨Ä£Ê½ÊǵäÐ͵Ľâñî¿ò¼Ü¡£¸ß²ãÄ£¿éÖ»ÐèÒªÖªµÀ²úÆ·µÄ³éÏóÀ࣬ÆäËûµÄʵÏÖÀà¶¼²»ÓùØÐÄ£¬·ûºÏµÏÃ×ÌØ·¨Ôò£¬ÎÒ²»ÐèÒªµÄ¾Í²»ÒªÈ¥½»Á÷£»Ò²·ûºÏÒÀÀµµ¹ÖÃÔ­Ôò£¬Ö»ÒÀÀµ²úÆ·ÀàµÄ³éÏó£»µ±È»Ò²·ûºÏÀïÊÏÌæ»»Ô­Ôò£¬Ê¹ÓòúÆ·×ÓÀàÌæ»»²úÆ·¸¸À࣬ûÎÊÌ⣡

Abstruct Factory Pattern£¨³éÏ󹤳§Ä£Ê½£©

Òâͼ

Ìṩһ¸ö´´½¨Ò»ÏµÁÐÏà¹Ø»òÏ໥ÒÀÀµ¶ÔÏóµÄ½Ó¿Ú£¬¶øÎÞÐèÖ¸¶¨ËüÃǾßÌåµÄÀà¡£

ÊÊÓÃÐÔ

1.Ò»¸öϵͳҪ¶ÀÁ¢ÓÚËüµÄ²úÆ·µÄ´´½¨¡¢×éºÏºÍ±íʾʱ¡£

2.Ò»¸öϵͳҪÓɶà¸ö²úƷϵÁÐÖеÄÒ»¸öÀ´ÅäÖÃʱ¡£

3.µ±ÄãҪǿµ÷һϵÁÐÏà¹ØµÄ²úÆ·¶ÔÏóµÄÉè¼ÆÒÔ±ã½øÐÐÁªºÏʹÓÃʱ¡£

4.µ±ÄãÌṩһ¸ö²úÆ·Àà¿â£¬¶øÖ»ÏëÏÔʾËüÃǵĽӿڶø²»ÊÇʵÏÖʱ¡£

½á¹¹

²ÎÓëÕß

AbstractFactory (³éÏ󹤳§)

¡ª ÉùÃ÷Ò»¸ö´´½¨³éÏó²úÆ·¶ÔÏóµÄ²Ù×÷½Ó¿Ú¡£

ConcreteFactory (¾ßÌ幤³§)

¡ª ʵÏÖ´´½¨¾ßÌå²úÆ·¶ÔÏóµÄ²Ù×÷¡£

AbstractProduct (³éÏó²úÆ·)

¡ª ΪһÀà²úÆ·¶ÔÏóÉùÃ÷Ò»¸ö½Ó¿Ú¡£

ConcreteProduct (¾ßÌå²úÆ·)

¡ª ¶¨ÒåÒ»¸ö½«±»ÏàÓ¦µÄ¾ßÌ幤³§´´½¨µÄ²úÆ·¶ÔÏó¡£

¡ª ʵÏÖAbstractProduct½Ó¿Ú¡£

Client£¨Ê¹Óó¡¾°£©

¡ª ½öʹÓÃÓÉAbstractFactoryºÍAbstractProductÀàÉùÃ÷µÄ½Ó¿Ú¡£?

Àý×Ó

ÈýÖÖ¹¤³§Ä£Ê½µÄÇø±ð

¹¤³§·½·¨Ä£Ê½ºÍ³éÏ󹤳§Ä£Ê½µÄÇø±ð

¼òµ¥¹¤³§Ä£Ê½£ºÖ»ÓÐÒ»¸ö¹¤³§ÀàÒ»¸öÉú²ú·½·¨£¬¸ù¾Ý²ÎÊý²»Í¬Éú²ú²»Í¬µÄ²úÆ·¡£

¹¤³§·½·¨Ä£Ê½£ºÃ¿Ò»¸ö¹¤³§ÀàÖ»¸ºÔðÒ»¸ö²úÆ·Éú²ú£¬²»Éú³ÉÆäËü²úÆ·¡£ºÃ±ÈÒ»ÌõÉú²úÏßÖ»Éú²úÒ»¸ö²úÆ·Ïß¡£

³éÏ󹤳§Ä£Ê½£ºÃ¿Ò»¸ö¹¤³§ÀàÌṩ¶à¸ö·½·¨£¬¿ÉÒÔÉú²ú²»Í¬µÄ²úÆ·¡£ºÃ±È¶àÌõÉú²úÏß¿ÉÒÔÉú²ú¶à¼Ò²úÆ·¡£

Builder Pattern£¨½¨ÔìÕßģʽ£©

Òâͼ

½«Ò»¸ö¸´ÔÓ¶ÔÏóµÄ¹¹½¨ÓëËüµÄ±íʾ·ÖÀ룬ʹµÃͬÑùµÄ¹¹½¨¹ý³Ì¿ÉÒÔ´´½¨²»Í¬µÄ±íʾ¡£

ÊÊÓÃÐÔ

* µ±´´½¨¸´ÔÓ¶ÔÏóµÄËã·¨Ó¦¸Ã¶ÀÁ¢ÓڸöÔÏóµÄ×é³É²¿·ÖÒÔ¼°ËüÃǵÄ×°Å䷽ʽʱ¡£

* µ±¹¹Ôì¹ý³Ì±ØÐëÔÊÐí±»¹¹ÔìµÄ¶ÔÏóÓв»Í¬µÄ±íʾʱ¡£

½á¹¹

²ÎÓëÕߣº

Builder(³éÏó½¨ÔìÕß½ÇÉ«)

¡ª Ϊ´´½¨Ò»¸öProduct¶ÔÏóµÄ¸÷¸ö²¿¼þÖ¸¶¨³éÏó½Ó¿Ú¡£

ConcreteBuilder(¾ßÌ彨ÔìÕß)

¡ª ʵÏÖBuilderµÄ½Ó¿ÚÒÔ¹¹ÔìºÍ×°Åä¸Ã²úÆ·µÄ¸÷¸ö²¿¼þ¡£

¡ª ¶¨Òå²¢Ã÷È·ËüËù´´½¨µÄ±íʾ¡£

¡ª Ìṩһ¸ö¼ìË÷²úÆ·µÄ½Ó¿Ú¡£

Director(µ¼ÑݽÇÉ«)

¡ª ¹¹ÔìÒ»¸öʹÓÃBuilder½Ó¿ÚµÄ¶ÔÏó¡£

Product(½¨ÔìµÄ²úÆ·)

¡ª ±íʾ±»¹¹ÔìµÄ¸´ÔÓ¶ÔÏó¡£ ConcreteBuilder´´½¨¸Ã²úÆ·µÄÄÚ²¿±íʾ²¢¶¨ÒåËüµÄ×°Åä¹ý³Ì¡£

¡ª °üº¬¶¨Òå×é³É²¿¼þµÄÀà,°üÀ¨½«ÕâЩ²¿¼þ×°Åä³É×îÖÕ²úÆ·µÄ½Ó¿Ú¡£

Àý×Ó

½¨ÔìÕßģʽºÍ¹¤³§Ä£Ê½µÄÇø±ð

µ±´´ÔìÒ»¸ö¶ÔÏóÐèÒªºÜ¶à²½ÖèʱÊʺÏʹÓý¨ÔìÕßģʽ¡£

¶øµ±Ö»Ðèµ÷ÓÃÒ»¸ö·½·¨¾Í¿ÉÒÔ¼òµ¥µØ´´½¨Õû¸ö¶ÔÏóʱÊʺÏʹÓù¤³§Ä£Ê½¡£

½á¹¹ÐÍÉè¼ÆÄ£Ê½£º

Adapter Pattern£¨ÊÊÅäÆ÷ģʽ£©

Òâͼ

½«Ò»¸öÀàµÄ½Ó¿Úת»»³ÉÁíÍâÒ»¸ö¿Í»§Ï£ÍûµÄ½Ó¿Ú¡£Adapter ģʽʹµÃÔ­±¾ÓÉÓÚ½Ó¿Ú²»¼æÈݶø²»ÄÜÒ»Æð¹¤×÷µÄÄÇЩÀà¿ÉÒÔÒ»Æð¹¤×÷¡£

×¢£ºÊÊÅäÆ÷ģʽÔÚÏêϸÉè¼Æ½×¶Î²»ÐèÒª¿¼ÂÇËü£¬ËüÊÇΪÁ˶ÔÏÖÓÐϵͳ»ò²úÆ·½Ó¿Ú¼æÈÝʱ£¬Ò²¾ÍÊǼȳÉÊÂʵµÄÇé¿öϵIJ¹¾È´ëÊ©¡£

ÊÊÓÃÐÔ

* ÄãÏëʹÓÃÒ»¸öÒѾ­´æÔÚµÄÀ࣬¶øËüµÄ½Ó¿Ú²»·ûºÏÄãµÄÐèÇó¡£

* ÄãÏë´´½¨Ò»¸ö¿ÉÒÔ¸´ÓõÄÀ࣬¸ÃÀà¿ÉÒÔÓëÆäËû²»Ïà¹ØµÄÀà»ò²»¿ÉÔ¤¼ûµÄÀࣨ¼´ÄÇЩ½Ó¿Ú¿ÉÄܲ»Ò»¶¨¼æÈݵÄÀࣩЭͬ¹¤×÷¡£

* £¨½öÊÊÓÃÓÚ¶ÔÏóAdapter£©ÄãÏëʹÓÃһЩÒѾ­´æÔÚµÄ×ÓÀ࣬µ«ÊDz»¿ÉÄܶÔÿһ¸ö¶¼½øÐÐ×ÓÀ໯ÒÔÆ¥ÅäËüÃǵĽӿڡ£¶ÔÏóÊÊÅäÆ÷¿ÉÒÔÊÊÅäËüµÄ¸¸Àà½Ó¿Ú¡£

½á¹¹

1¡¢ÀàÊÊÅäÆ÷

2¡¢¶ÔÏóÊÊÅäÆ÷

²ÎÓëÕß

Target (Ä¿±ê½ÇÉ«£¬ÒªÓõĽӿÚ)

¡ª ¶¨ÒåClientʹÓõÄÓëÌØ¶¨ÁìÓòÏà¹ØµÄ½Ó¿Ú¡£

Client (ʹÓó¡¾°)

¡ª Óë·ûºÏTarget½Ó¿ÚµÄ¶ÔÏóЭͬ¡£

Adaptee (±»ÊÊÅäÕß)

¡ª ¶¨ÒåÒ»¸öÒѾ­´æÔڵĽӿÚ,Õâ¸ö½Ó¿ÚÐèÒªÊÊÅä¡£

Adapter (ÊÊÅäÆ÷£¬°ÑAdaptee½Ó¿Úת»»ÎªTarget¿ÉÓõĽӿÚ)

¡ª ¶ÔAdapteeµÄ½Ó¿ÚÓëTarget½Ó¿Ú½øÐÐÊÊÅä

Àý×Ó

1¡¢ ÀàÊÊÅäÆ÷

2¡¢ ¶ÔÏóÊÊÅäÆ÷

ÓÅȱµã

Óŵ㣺

1. ÊÊÅäÆ÷ģʽ¿ÉÒÔÈÃÁ½¸öûÓÐÈκιØÏµµÄÀàÔÚÒ»ÆðÔËÐУ¬Ö»ÒªÊÊÅäÆ÷Õâ¸ö½ÇÉ«Äܹ»¸ã¶¨ËûÃǾͳɡ£

2. Ôö¼ÓÁËÀàµÄ͸Ã÷ÐÔ

ÏëÏë¿´£¬ÎÒÃÇ·ÃÎʵÄTargetÄ¿±ê½ÇÉ«£¬µ«ÊǾßÌåµÄʵÏÖ¶¼Î¯ÍиøÁËÔ´½ÇÉ«£¬¶øÕâЩ¶Ô¸ß²ã´ÎÄ£¿éÊÇ͸Ã÷µÄ£¬Ò²ÊÇËü²»ÐèÒª¹ØÐĵġ£

3. Ìá¸ßÁËÀàµÄ¸´Óöȵ±È»ÁË£¬Ô´½ÇÉ«ÔÚÔ­ÓеÄϵͳÖл¹ÊÇ¿ÉÒÔÕý³£Ê¹Ó㬶øÔÚÄ¿±ê½ÇÉ«ÖÐÒ²¿ÉÒԳ䵱еÄÑÝÔ±¡£

4. Áé»îÐԷdz£ºÃ

ijһÌ죬ͻȻ²»ÏëÒªÊÊÅäÆ÷£¬Ã»ÎÊÌ⣬ɾ³ýµôÕâ¸öÊÊÅäÆ÷¾Í¿ÉÒÔÁË£¬ÆäËûµÄ´úÂë¶¼²»ÓÃÐ޸쬻ù±¾ÉϾÍÀàËÆÒ»¸öÁé»îµÄ¹¹¼þ£¬ÏëÓþÍÓ㬲»Ïë¾ÍÐ¶ÔØ¡£

Bridge Pattern£¨ÇŽÓģʽ£©

Òâͼ

½«³éÏ󲿷ÖÓëËüµÄʵÏÖ²¿·Ö·ÖÀ룬ʹËüÃǶ¼¿ÉÒÔ¶ÀÁ¢µØ±ä»¯¡£

¡¾GOF95¡¿ÔÚÌá³öÇÅÁºÄ£Ê½µÄʱºòÖ¸³ö£¬ÇÅÁºÄ£Ê½µÄÓÃÒâÊÇ"½«³éÏó»¯(Abstraction)ÓëʵÏÖ»¯(Implementation)ÍÑñʹµÃ¶þÕß¿ÉÒÔ¶ÀÁ¢µØ±ä»¯"¡£Õâ¾ä»°ÓÐÈý¸ö¹Ø¼ü´Ê£¬Ò²¾ÍÊdzéÏ󻯡¢ÊµÏÖ»¯ºÍÍÑñî¡£

* ³éÏó»¯

´æÔÚÓÚ¶à¸öʵÌåÖеĹ²Í¬µÄ¸ÅÄîÐÔÁªÏµ£¬¾ÍÊdzéÏ󻯡£×÷Ϊһ¸ö¹ý³Ì£¬³éÏ󻯾ÍÊǺöÂÔһЩÐÅÏ¢£¬´Ó¶ø°Ñ²»Í¬µÄʵÌåµ±×öͬÑùµÄʵÌå¶Ô´ý¡¾LISKOV94¡¿¡£

* ʵÏÖ»¯

³éÏ󻯸ø³öµÄ¾ßÌåʵÏÖ£¬¾ÍÊÇʵÏÖ»¯¡£

* ÍÑñî

ËùνñîºÏ£¬¾ÍÊÇÁ½¸öʵÌåµÄÐÐΪµÄijÖÖÇ¿¹ØÁª¡£¶ø½«ËüÃǵÄÇ¿¹ØÁªÈ¥µô£¬¾ÍÊÇñîºÏµÄ½âÍÑ£¬»ò³ÆÍÑñî¡£ÔÚÕâÀÍÑñîÊÇÖ¸½«³éÏ󻯺ÍʵÏÖ»¯Ö®¼äµÄñîºÏ½âÍÑ¿ª£¬»òÕß˵Êǽ«ËüÃÇÖ®¼äµÄÇ¿¹ØÁª¸Ä»»³ÉÈõ¹ØÁª¡£

½«Á½¸ö½Çɫ֮¼äµÄ¼Ì³Ð¹ØÏµ¸ÄΪ¾ÛºÏ¹ØÏµ£¬¾ÍÊǽ«ËüÃÇÖ®¼äµÄÇ¿¹ØÁª¸Ä»»³ÉΪÈõ¹ØÁª¡£Òò´Ë£¬ÇÅÁºÄ£Ê½ÖеÄËùνÍÑñ¾ÍÊÇÖ¸ÔÚÒ»¸öÈí¼þϵͳµÄ³éÏ󻯺ÍʵÏÖ»¯Ö®¼äʹÓÃ×éºÏ/¾ÛºÏ¹ØÏµ¶ø²»ÊǼ̳йØÏµ£¬´Ó¶øÊ¹Á½Õß¿ÉÒÔÏà¶Ô¶ÀÁ¢µØ±ä»¯¡£Õâ¾ÍÊÇÇÅÁºÄ£Ê½µÄÓÃÒâ¡£

½á¹¹

ÇÅÁºÄ£Ê½ËùÉæ¼°µÄ½ÇÉ«ÓУº

³éÏó»¯(Abstraction)½ÇÉ«£º³éÏ󻯸ø³öµÄ¶¨Ò壬²¢±£´æÒ»¸ö¶ÔʵÏÖ»¯¶ÔÏóµÄÒýÓá£

ÐÞÕý³éÏó»¯(Refined Abstraction)½ÇÉ«£ºÀ©Õ¹³éÏ󻯽ÇÉ«£¬¸Ä±äºÍÐÞÕý¸¸Àà¶Ô³éÏ󻯵͍Òå¡£

ʵÏÖ»¯(Implementor)½ÇÉ«£ºÕâ¸ö½ÇÉ«¸ø³öʵÏÖ»¯½ÇÉ«µÄ½Ó¿Ú£¬µ«²»¸ø³ö¾ßÌåµÄʵÏÖ¡£±ØÐëÖ¸³öµÄÊÇ£¬Õâ¸ö½Ó ¿Ú²»Ò»¶¨ºÍ³éÏ󻯽ÇÉ«µÄ½Ó¿Ú¶¨ÒåÏàͬ£¬Êµ¼ÊÉÏ£¬ÕâÁ½¸ö½Ó¿Ú¿ÉÒԷdz£²»Ò»Ñù¡£ÊµÏÖ»¯½ÇɫӦµ±Ö»¸ø³öµ×²ã²Ù×÷£¬¶ø³éÏ󻯽ÇɫӦµ±Ö»¸ø³ö»ùÓڵײã²Ù×÷µÄ¸ü¸ßÒ»²ã µÄ²Ù×÷¡£

¾ßÌåʵÏÖ»¯(Concrete Implementor)½ÇÉ«£ºÕâ¸ö½ÇÉ«¸ø³öʵÏÖ»¯½ÇÉ«½Ó¿ÚµÄ¾ßÌåʵÏÖ¡£

Àý×Ó

Ò»¸ö±í¾ÍÒ»¸ö±í´ø£¿

»¹ÊÇ£¬Ò»¸ö±í+¶à¸ö¿É¸ü»»µÄ±í´ø£¿

ÇŽÓģʽºÍÊÊÅäÆ÷ģʽµÄÇø±ð

ºÜ¶àʱºò¾­³£ÈÝÒ×°ÑÇŽÓģʽºÍÊÊÅäÆ÷ģʽŪ»ì¡£ÄÇʲôʱºòÓÃÇŽӣ¬Ê²Ã´Ê±ºòÓÃÊÊÅäÆ÷ÄØ £¿

¹²Í¬µã£º

ÇŽӺÍÊÊÅäÆ÷¶¼ÊÇÈÃÁ½¸ö¶«Î÷ÅäºÏ¹¤×÷

²»Í¬µã£º³ö·¢µã²»Í¬¡£

ÊÊÅäÆ÷£º¸Ä±äÒÑÓеÄÁ½¸ö½Ó¿Ú£¬ÈÃËûÃÇÏàÈÝ¡£

ÇŽÓģʽ£º·ÖÀë³éÏ󻯺ÍʵÏÖ£¬Ê¹Á½ÕߵĽӿڿÉÒÔ²»Í¬£¬Ä¿µÄÊÇ·ÖÀë¡£

ËùÒÔ˵£¬Èç¹ûÄãÄõ½Á½¸öÒÑÓÐÄ£¿é£¬ÏëÈÃËûÃÇͬʱ¹¤×÷£¬ÄÇôÄãʹÓõÄÊÊÅäÆ÷¡£ Èç¹ûÄ㻹ʲô¶¼Ã»ÓУ¬µ«ÊÇÏë·Ö¿ªÊµÏÖ£¬ÄÇôÇŽÓÊÇÒ»¸öÑ¡Ôñ¡£

ÇŽÓÊÇÏÈÓÐÇÅ£¬²ÅÓÐÁ½¶ËµÄ¶«Î÷ ÊÊÅäÊÇÏÈÓÐÁ½±ßµÄ¶«Î÷£¬²ÅÓÐÊÊÅäÆ÷ ¡£

ÇŽÓÊÇÔÚÇźÃÁËÖ®ºó£¬Á½±ßµÄ¶«Î÷»¹¿ÉÒԱ仯¡£

ÇÅģʽ²¢²»Í¬ÓÚÊÊÅäÆ÷ģʽ£¬ÊÊÅäÆ÷ģʽÆäʵÊÇÒ»¸öʺóÖî¸ðÁÁ£¬µ±·¢ÏÖÒÔǰµÄ¶«Î÷²»ÊÊÓÃÁ˲ÅÈ¥×öÒ»¸öÃÖ²¹µÄ´ëÊ©¡£ÇÅģʽÏà¶ÔÀ´ËµËù×öµÄ¸Ä±ä±ÈÊÊÅäÆ÷ģʽÔ磬Ëü¿ÉÒÔÊÊÓÃÓÚÓÐÁ½¸öÉõÖÁÁ½¸öÒÔÉÏά¶ÈµÄ±ä»¯¡£

ÇŽÓģʽ½«¼Ì³Ð¹ØÏµ×ª»»Îª¹ØÁª¹ØÏµ£¬´Ó¶ø½µµÍÁËÀàÓëÀàÖ®¼äµÄñîºÏ£¬¼õÉÙÁË´úÂë±àдÁ¿¡£

Composite Pattern£¨×éºÏģʽ£©

×éºÏģʽ£¬½«¶ÔÏó×éºÏ³ÉÊ÷ÐνṹÒÔ±íʾ¡°²¿·Ö-ÕûÌ塱µÄ²ã´Î½á¹¹£¬×éºÏģʽʹµÃÓû§¶Ôµ¥¸ö¶ÔÏóºÍ×éºÏ¶ÔÏóµÄʹÓþßÓÐÒ»ÖÂÐÔ¡£

ÓÐʱºòÓÖ½Ð×ö²¿·Ö-ÕûÌåģʽ£¬ËüʹÎÒÃÇÊ÷ÐͽṹµÄÎÊÌâÖУ¬Ä£ºýÁ˼òµ¥ÔªËغ͸´ÔÓÔªËØµÄ¸ÅÄ¿Í»§³ÌÐò¿ÉÒÔÏñ´¦Àí¼òµ¥ÔªËØÒ»ÑùÀ´´¦Àí¸´ÔÓÔªËØ,´Ó¶øÊ¹µÃ¿Í»§³ÌÐòÓ븴ÔÓÔªËØµÄÄÚ²¿½á¹¹½âñî¡£

×éºÏģʽÈÃÄã¿ÉÒÔÓÅ»¯´¦ÀíµÝ¹é»ò·Ö¼¶Êý¾Ý½á¹¹¡£ÓÐÐí¶à¹ØÓÚ·Ö¼¶Êý¾Ý½á¹¹µÄÀý×Ó£¬Ê¹µÃ×éºÏģʽ·Ç³£ÓÐÓÃÎäÖ®µØ¡£¹ØÓÚ·Ö ¼¶Êý¾Ý½á¹¹µÄÒ»¸öÆÕ±éÐÔµÄÀý×ÓÊÇÄãÿ´ÎʹÓõçÄÔʱËùÓöµ½µÄ:Îļþϵͳ¡£ÎļþϵͳÓÉĿ¼ºÍÎļþ×é³É¡£Ã¿¸öĿ¼¶¼¿ÉÒÔ×°ÄÚÈÝ¡£Ä¿Â¼µÄÄÚÈÝ¿ÉÒÔÊÇÎļþ£¬Ò²¿ÉÒÔÊÇĿ¼¡£°´ÕÕÕâÖÖ·½Ê½£¬¼ÆËã»úµÄÎļþϵͳ¾ÍÊÇÒԵݹé½á¹¹À´×éÖ¯µÄ¡£Èç¹ûÄãÏëÒªÃèÊöÕâÑùµÄÊý¾Ý½á¹¹£¬ÄÇôÄã¿ÉÒÔʹÓÃ×éºÏģʽComposite¡£

Àý×Ó

Òâͼ£º

(GoF¡¶Éè¼ÆÄ£Ê½¡·)£º½«¶ÔÏó×éºÏ³ÉÊ÷ÐνṹÒÔ±íʾ¡°²¿·Ö-ÕûÌ塱µÄ²ã´Î½á¹¹¡£×éºÏģʽʹµÃÓû§¶Ôµ¥¸ö¶ÔÏóºÍ×éºÏ¶ÔÏóµÄʹÓþßÓÐÒ»ÖÂÐÔ¡£

½á¹¹£º

Éæ¼°½ÇÉ«£º

1.Component ÊÇ×éºÏÖеĶÔÏóÉùÃ÷½Ó¿Ú£¬ÔÚÊʵ±µÄÇé¿öÏ£¬ÊµÏÖËùÓÐÀ๲ÓнӿڵÄĬÈÏÐÐΪ¡£ÉùÃ÷Ò»¸ö½Ó¿ÚÓÃÓÚ·ÃÎʺ͹ÜÀíComponent×Ó²¿¼þ¡£

2.Leaf ÔÚ×éºÏÖбíʾҶ×Ó½áµã¶ÔÏó£¬Ò¶×Ó½áµãûÓÐ×Ó½áµã¡£

3.Composite ¶¨ÒåÓÐÖ¦½ÚµãÐÐΪ£¬ÓÃÀ´´æ´¢×Ó²¿¼þ£¬ÔÚComponent½Ó¿ÚÖÐʵÏÖÓë×Ó²¿¼þÓйزÙ×÷£¬ÈçÔö¼Ó(add)ºÍɾ³ý(remove)µÈ¡£

ÊÊÓÃÐÔ£º

ÒÔÏÂÇé¿öÏÂÊÊÓÃCompositeģʽ£º

1£®ÄãÏë±íʾ¶ÔÏóµÄ²¿·Ö-ÕûÌå²ã´Î½á¹¹

2£®ÄãÏ£ÍûÓû§ºöÂÔ×éºÏ¶ÔÏóÓëµ¥¸ö¶ÔÏóµÄ²»Í¬£¬Óû§½«Í³Ò»µØÊ¹ÓÃ×éºÏ½á¹¹ÖеÄËùÓжÔÏó¡£

Decorator Pattern£¨×°ÊÎÕßģʽ£©

Decorator Pattern½Ð×°ÊÎģʽ£¬»ò×°ÊÎÕßģʽ£¬ÒÔǰ½Ð°ü×°Æ÷ģʽ£¨Wrapper£¬GoFÔÚ92-93ÄêÓÉWrapper¸ÄΪDecorator£©¡£

×°ÊÎģʽÊÇÔÚ²»±Ø¸Ä±äÔ­ÀàÎļþºÍʹÓü̳еÄÇé¿öÏ£¬¶¯Ì¬µØÀ©Õ¹Ò»¸ö¶ÔÏóµÄ¹¦ÄÜ¡£ËüÊÇͨ¹ý´´½¨Ò»¸ö°ü×°¶ÔÏó£¬Ò²¾ÍÊÇ×°ÊÎÀ´°ü¹üÕæÊµµÄ¶ÔÏó¡£

DecoratorģʽµÄ¹¤×÷Ô­ÀíÊÇ£º¿ÉÒÔ´´½¨Ê¼ÓÚDecorator¶ÔÏ󣨸ºÔðÐµĹ¦ÄܵĶÔÏó£©ÖÕÓÚÔ­¶ÔÏóµÄÒ»¸ö¶ÔÏó¡°Á´¡±¡£

×°ÊÎÕßģʽÒþº¬µÄÊÇͨ¹ýÒ»ÌõÌõ×°ÊÎÁ´È¥ÊµÏÖ¾ßÌå¶ÔÏó£¬Ã¿Ò»Ìõ×°ÊÎÁ´¶¼Ê¼ÓÚÒ»¸öComponet¶ÔÏó£¬Ã¿¸ö×°ÊÎÕß¶ÔÏóºóÃæ½ô¸ú×ÅÁíÒ»¸ö×°ÊÎÕß¶ÔÏ󣬶ø¶ÔÏóÁ´ÖÕÓÚConcreteComponet¶ÔÏó¡£

Òâͼ

¶¯Ì¬µØ¸øÒ»¸ö¶ÔÏóÌí¼ÓһЩ¶îÍâµÄÖ°Ôð¡£¾ÍÔö¼Ó¹¦ÄÜÀ´Ëµ£¬DecoratorģʽÏà±ÈÉú³É×ÓÀà¸üΪÁé»î¡£

ÊÊÓÃÐÔ

1. ÐèÒªÀ©Õ¹Ò»¸öÀàµÄ¹¦ÄÜ£¬»ò¸øÒ»¸öÀàÌí¼Ó¸½¼ÓÖ°Ôð¡£

2. ÐèÒª¶¯Ì¬µÄ¸øÒ»¸ö¶ÔÏóÌí¼Ó¹¦ÄÜ£¬ÕâЩ¹¦ÄÜ¿ÉÒÔÔÙ¶¯Ì¬µÄ³·Ïú¡£

3. ÐèÒªÔö¼ÓÓÉһЩ»ù±¾¹¦ÄܵÄÅÅÁÐ×éºÏ¶ø²úÉúµÄ·Ç³£´óÁ¿µÄ¹¦ÄÜ£¬´Ó¶øÊ¹¼Ì³Ð¹ØÏµ±äµÄ²»ÏÖʵ¡£

4. µ±²»ÄܲÉÓÃÉú³É×ÓÀàµÄ·½·¨½øÐÐÀ©³äʱ¡£Ò»ÖÖÇé¿öÊÇ£¬¿ÉÄÜÓдóÁ¿¶ÀÁ¢µÄÀ©Õ¹£¬ÎªÖ§³ÖÿһÖÖ×éºÏ½«²úÉú´óÁ¿µÄ×ÓÀ࣬ʹµÃ×ÓÀàÊýÄ¿³Ê±¬Õ¨ÐÔÔö³¤¡£ÁíÒ»ÖÖÇé¿ö¿ÉÄÜÊÇÒòΪÀඨÒå±»Òþ²Ø£¬»òÀඨÒå²»ÄÜÓÃÓÚÉú³É×ÓÀà¡£

½á¹¹£º

ÔÚ×°ÊÎģʽÖеĸ÷¸ö½ÇÉ«ÓУº

£¨1£©³éÏó¹¹¼þ£¨Component£©½ÇÉ«£º¸ø³öÒ»¸ö³éÏó½Ó¿Ú£¬ÒԹ淶׼±¸½ÓÊÕ¸½¼ÓÔðÈεĶÔÏó¡£

£¨2£©¾ßÌå¹¹¼þ£¨Concrete Component£©½ÇÉ«£º¶¨ÒåÒ»¸ö½«Òª½ÓÊÕ¸½¼ÓÔðÈεÄÀà¡£

£¨3£©×°ÊΣ¨Decorator£©½ÇÉ«£º³ÖÓÐÒ»¸ö¹¹¼þ£¨Component£©¶ÔÏóµÄʵÀý£¬²¢ÊµÏÖÒ»¸öÓë³éÏó¹¹¼þ½Ó¿ÚÒ»ÖµĽӿڡ£

£¨4£©¾ßÌå×°ÊΣ¨Concrete Decorator£©½ÇÉ«£º¸ºÔð¸ø¹¹¼þ¶ÔÏóÌí¼ÓÉϸ½¼ÓµÄÔðÈΡ£

Àý×Ó

¿Õ×À×Ó£¬Ã»×°ÊÎ

¿Õ×À×Ó£¬Ã»×°ÊÎ ×°ÊκóµÄ×À×Ó£¬ÓÐ×À²¼£¬Óл¨

Áí£º

JavaÖÐIOÁ÷µÄÉè¼Æ¾Í´óÁ¿ÔËÓÃÁË×°ÊÎģʽ£¬È磺

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("..")));

Facade Pattern£¨Íâ¹Ûģʽ£©

Òâͼ

Ϊ×ÓϵͳÖеÄÒ»×é½Ó¿ÚÌṩһ¸öÒ»ÖµĽçÃæ£¬Facadeģʽ¶¨ÒåÁËÒ»¸ö¸ß²ã½Ó¿Ú£¬Õâ¸ö½Ó¿ÚʹµÃÕâÒ»×Óϵͳ¸ü¼ÓÈÝÒ×ʹÓá£

ÊÊÓÃÐÔ

* µ±ÄãҪΪһ¸ö¸´ÔÓ×ÓϵͳÌṩһ¸ö¼òµ¥½Ó¿Úʱ¡£×ÓϵͳÍùÍùÒòΪ²»¶ÏÑÝ»¯¶ø±äµÃÔ½À´Ô½¸´ÔÓ¡£´ó¶àÊýģʽʹÓÃʱ¶¼»á²úÉú¸ü¶à¸üСµÄÀà¡£ÕâʹµÃ×Óϵͳ¸ü¾ß¿ÉÖØÓÃÐÔ£¬ Ò²¸üÈÝÒ×¶Ô×Óϵͳ½øÐж¨ÖÆ£¬µ«ÕâÒ²¸øÄÇЩ²»ÐèÒª¶¨ÖÆ×ÓϵͳµÄÓû§´øÀ´Ò»Ð©Ê¹ÓÃÉϵÄÀ§ÄÑ¡£Facade¿ÉÒÔÌṩһ¸ö¼òµ¥µÄȱʡÊÓͼ£¬ÕâÒ»ÊÓͼ¶Ô´ó¶àÊýÓû§À´ ˵ÒѾ­×ã¹»£¬¶øÄÇЩÐèÒª¸ü¶àµÄ¿É¶¨ÖÆÐÔµÄÓû§¿ÉÒÔÔ½¹ýFacade²ã¡£

* ¿Í»§³ÌÐòÓë³éÏóÀàµÄʵÏÖ²¿·ÖÖ®¼ä´æÔÚןܴóµÄÒÀÀµÐÔ¡£ÒýÈëFacade½«Õâ¸ö×ÓϵͳÓë¿Í»§ÒÔ¼°ÆäËûµÄ×Óϵͳ·ÖÀ룬¿ÉÒÔÌá¸ß×ÓϵͳµÄ¶ÀÁ¢ÐԺͿÉÒÆÖ²ÐÔ¡£

* µ±ÄãÐèÒª¹¹½¨Ò»¸ö²ã´Î½á¹¹µÄ×Óϵͳʱ£¬Ê¹ÓÃÃÅÃæÄ£Ê½¶¨Òå×ÓϵͳÖÐÿ²ãµÄÈë¿Úµã¡£Èç¹û×Óϵͳ֮¼äÊÇÏ໥ÒÀÀµµÄ£¬Äã¿ÉÒÔÈÃËüÃǽöͨ¹ýFacade½øÐÐͨѶ£¬´Ó¶ø¼ò»¯ÁËËüÃÇÖ®¼äµÄÒÀÀµ¹ØÏµ¡£

½á¹¹

Facade

Õâ¸öÍâ¹ÛÀàΪ×ÓϵͳÌṩһ¸ö¹²Í¬µÄ¶ÔÍâ½Ó¿Ú

Clients

¿Í»§¶ÔÏóͨ¹ýÒ»¸öÍâ¹Û½Ó¿Ú¶Áд×ÓϵͳÖи÷½Ó¿ÚµÄÊý¾Ý×ÊÔ´¡£

Àý×Ó

Flyweight Pattern£¨ÏíԪģʽ£©

Òâͼ

ÔËÓù²Ïí¼¼ÊõÓÐЧµØÖ§³Ö´óÁ¿Ï¸Á£¶ÈµÄ¶ÔÏó¡£

ÊÊÓÃÐÔ

µ±ÒÔÏÂËùÓеÄÌõ¼þ¶¼Âú×ãʱ£¬¿ÉÒÔ¿¼ÂÇʹÓÃÏíԪģʽ£º

* Ò»¸öÓ¦ÓóÌÐòʹÓÃÁË´óÁ¿µÄ¶ÔÏó¡£

* ÍêÈ«ÓÉÓÚʹÓôóÁ¿µÄ¶ÔÏó£¬Ôì³ÉºÜ´óµÄ´æ´¢¿ªÏú¡£

* ¶ÔÏóµÄ´ó¶àÊý״̬¶¼¿É±äΪÍⲿ״̬¡£

* Èç¹ûɾ³ý¶ÔÏóµÄÍⲿ״̬£¬ÄÇô¿ÉÒÔÓÃÏà¶Ô½ÏÉٵĹ²Ïí¶ÔÏóÈ¡´úºÜ¶à×é¶ÔÏó¡£

* Ó¦ÓóÌÐò²»ÒÀÀµÓÚ¶ÔÏó±êʶ¡£ÓÉÓÚFlyweight¶ÔÏó¿ÉÒÔ±»¹²Ïí£¬¶ÔÓÚ¸ÅÄîÉÏÃ÷ÏÔÓбðµÄ¶ÔÏ󣬱êʶ²âÊÔ½«·µ»ØÕæÖµ¡£

Âú×ãÒÔÉϵÄÕâЩÌõ¼þµÄϵͳ¿ÉÒÔʹÓÃÏíÔª¶ÔÏó¡£

×îºó£¬Ê¹ÓÃÏíԪģʽÐèҪά»¤Ò»¸ö¼Ç¼ÁËϵͳÒÑÓеÄËùÓÐÏíÔªµÄ±í£¬¶øÕâÐèÒªºÄ·Ñ×ÊÔ´¡£Òò´Ë£¬Ó¦µ±ÔÚÓÐ×ã¹»¶àµÄÏíԪʵÀý¿É¹©¹²Ïíʱ²ÅÖµµÃʹÓÃÏíԪģʽ¡£

×¢ÒâÒªµã£º

¸ù¾ÝÎÒÃǵľ­Ñ飬µ±Òª½«Ò»¸ö¶ÔÏó½øÐй²Ïíʱ£¬¾ÍÐèÒª¿¼Âǵ½¶ÔÏóµÄ״̬ÎÊÌâÁË£»²»Í¬µÄ¿Í»§¶Ë»ñµÃ¹²ÏíµÄ¶ÔÏóÖ®ºó£¬¿ÉÄÜ»áÐ޸Ĺ²Ïí¶ÔÏóµÄijЩ״̬£»´ó¼Ò¶¼ÐÞ¸ÄÁ˹²Ïí¶ÔÏóµÄ״̬£¬ÄÇô¾Í»á³öÏÖ¶ÔÏó״̬µÄÎÉÂÒ¡£¶ÔÓÚÏíԪģʽ£¬ÔÚʵÏÖʱһ¶¨Òª¿¼Âǵ½¹²Ïí¶ÔÏóµÄ״̬ÎÊÌâ¡£ÄÇôÏíԪģʽÊÇÈçºÎʵÏÖµÄÄØ£¿

ÔÚÏíԪģʽÖУ¬ÓÐÁ½¸ö·Ç³£ÖØÒªµÄ¸ÅÄÄÚ²¿×´Ì¬£¨intrinsicState£©ºÍÍⲿ״̬£¨extrinsicState£©¡£

ÄÚ²¿×´Ì¬´æ´¢ÓÚflyweightÖУ¬Ëü°üº¬Á˶ÀÁ¢ÓÚflyweight³¡¾°µÄÐÅÏ¢£¬ÕâЩÐÅϢʹµÃflyweight¿ÉÒÔ±»¹²Ïí¡£¶øÍⲿ״̬ȡ¾öÓÚflyweight³¡¾°£¬²¢¸ù¾Ý³¡¾°¶ø±ä»¯£¬Òò´Ë²»¿É¹²Ïí¡£Óû§¶ÔÏó¸ºÔðÔÚ±ØÒªµÄʱºò½«Íⲿ״̬´«µÝ¸øflyweight¡£

flyweightÖ´ÐÐʱËùÐèµÄ״̬±Ø¶¨ÊÇÄÚ²¿µÄ»òÍⲿµÄ¡£ÄÚ²¿×´Ì¬´æ´¢ÓÚConcreteFlyweight¶ÔÏóÖ®ÖУ»¶øÍⲿ¶ÔÏóÔòÓÉ Client¶ÔÏó´æ´¢»ò¼ÆËã¡£µ±Óû§µ÷ÓÃflyweight¶ÔÏóµÄ²Ù×÷ʱ£¬½«¸Ã״̬´«µÝ¸øËü¡£Í¬Ê±£¬Óû§²»Ó¦¸ÃÖ±½Ó¶ÔConcreteFlyweight Àà½øÐÐʵÀý»¯£¬¶øÖ»ÄÜ´ÓFlyweightFactory¶ÔÏóµÃµ½ConcreteFlyweight¶ÔÏó£¬Õâ¿ÉÒÔ±£Ö¤¶ÔËüÃÇÊʵ±µØ½øÐй²Ïí£»ÓÉÓÚ¹²ÏíÒ» ¸öʵÀý£¬ËùÒÔÔÚ´´½¨Õâ¸öʵÀýʱ£¬¾Í¿ÉÒÔ¿¼ÂÇʹÓõ¥ÀýģʽÀ´½øÐÐʵÏÖ¡£

ÏíԪģʽµÄ¹¤³§Ààά»¤ÁËÒ»¸öʵÀýÁÐ±í£¬Õâ¸öÁбíÖб£´æÁËËùÓеĹ²ÏíʵÀý£»µ±Óû§´ÓÏíԪģʽµÄ¹¤³§ÀàÇëÇó¹²Ïí¶ÔÏóʱ£¬Ê×ÏȲéѯÕâ¸öʵÀý±í£¬Èç¹û²»´æÔÚ¶ÔӦʵÀý£¬Ôò´´½¨Ò»¸ö£»Èç¹û´æÔÚ£¬ÔòÖ±½Ó·µ»Ø¶ÔÓ¦µÄʵÀý¡£

½á¹¹

Flyweight£ºÃèÊöÒ»¸ö½Ó¿Ú£¬Í¨¹ýÕâ¸ö½Ó¿Úflyweight¿ÉÒÔ½ÓÊܲ¢×÷ÓÃÓÚÍⲿ״̬£»

ConcreteFlyweight£ºÊµÏÖFlyweight½Ó¿Ú£¬²¢Îª¶¨ÒåÁËһЩÄÚ²¿×´Ì¬£¬ConcreteFlyweight¶ÔÏó±ØÐëÊǿɹ²ÏíµÄ£»Í¬Ê±£¬ËüËù´æ´¢µÄ״̬±ØÐëÊÇÄÚ²¿µÄ£»¼´£¬Ëü±ØÐë¶ÀÁ¢ÓÚConcreteFlyweight¶ÔÏóµÄ³¡¾°£»

UnsharedConcreteFlyweight£º²¢·ÇËùÓеÄFlyweight×ÓÀà¶¼ÐèÒª±»¹²Ïí¡£Flyweight½Ó¿Úʹ¹²Ïí³ÉΪ¿ÉÄÜ£¬µ«Ëü²¢²»Ç¿Öƹ²Ïí¡£

FlyweightFactory£º´´½¨²¢¹ÜÀíflyweight¶ÔÏó¡£ËüÐèҪȷ±£ºÏÀíµØ¹²Ïíflyweight£»µ±Óû§ÇëÇóÒ»¸öflyweightʱ£¬FlyweightFactory¶ÔÏóÌṩһ¸öÒÑ´´½¨µÄʵÀý£¬Èç¹ûÇëÇóµÄʵÀý²»´æÔÚµÄÇé¿öÏ£¬¾Íд´½¨Ò»¸öʵÀý£»

Client£ºÎ¬³ÖÒ»¸ö¶ÔflyweightµÄÒýÓã»Í¬Ê±£¬ËüÐèÒª¼ÆËã»ò´æ´¢flyweightµÄÍⲿ״̬¡£

ÈçºÎ¹²ÏíÁËFlyweight£¬ÈçÏÂͼ£º

Àý×Ó

×¢£º¿É¹²Ïí¡ª¡ª>¿ÉÒÔÀí½âΪ¿ÉÒÔ¸´Óõġ£

²»¿É¹²Ïí¡ª¡ª>¿ÉÒÔÀí½âΪ²»ÐèÒª¸´Ó㬲»¿É¸´Óõġ£

ÓÅȱµã

Óŵ㣺

ÏíԪģʽ¿ÉÒÔ±ÜÃâ´óÁ¿·Ç³£ÏàËÆ¶ÔÏóµÄ¿ªÏú¡£ÔÚ³ÌÐòÉè¼ÆÊ±£¬ÓÐʱÐèÒªÉú³É´óÁ¿Ï¸Á£¶ÈµÄÀàʵÀýÀ´±íʾÊý¾Ý¡£Èç¹ûÄÜ·¢ÏÖÕâЩʵÀýÊý¾Ý³ýÁ˼¸¸ö²ÎÊýÍâ»ù±¾¶¼ÊÇÏàͬµÄ£¬Ê¹ÓÃÏíԪģʽ¾Í¿ÉÒÔ´ó·ù¶ÈµØ¼õÉÙ¶ÔÏóµÄÊýÁ¿¡£

ȱµã£º

1£©ÏíԪģʽʹµÃϵͳ¸ü¼Ó¸´ÔÓ¡£ÎªÁËʹ¶ÔÏó¿ÉÒÔ¹²Ïí£¬ÐèÒª½«Ò»Ð©×´Ì¬Íⲿ»¯£¬ÕâʹµÃ³ÌÐòµÄÂß¼­¸´ÔÓ»¯¡£

2£©ÏíԪģʽ½«ÏíÔª¶ÔÏóµÄ״̬Íⲿ»¯£¬¶ø¶ÁÈ¡Íⲿ״̬ʹµÃÔËÐÐʱ¼äÉÔ΢±ä³¤¡£

Proxy Pattern£¨´úÀíģʽ£©

Òâͼ

ΪÆäËû¶ÔÏóÌṩһÖÖ´úÀíÒÔ¿ØÖƶÔÕâ¸ö¶ÔÏóµÄ·ÃÎÊ¡£

ÊÊÓÃÐÔ

ÔÚÐèÒªÓñȽÏͨÓú͸´ÔӵĶÔÏóÖ¸Õë´úÌæ¼òµ¥µÄÖ¸ÕëµÄʱºò£¬Ê¹ÓÃProxyģʽ¡£ÏÂÃæÊÇһЩ¿ÉÒÔʹÓÃProxyģʽ³£¼ûÇé¿ö£º

Ô¶³Ì´úÀí£¨Remote Proxy£©ÎªÒ»¸ö¶ÔÏóÔÚ²»Í¬µÄµØÖ·¿Õ¼äÌṩ¾Ö²¿´ú±í¡£

Ðé´úÀí£¨Virtual Proxy£©¸ù¾ÝÐèÒª´´½¨¿ªÏúºÜ´óµÄ¶ÔÏó¡£

±£»¤´úÀí£¨Protection Proxy£©¿ØÖƶÔԭʼ¶ÔÏóµÄ·ÃÎÊ¡£±£»¤´úÀíÓÃÓÚ¶ÔÏóÓ¦¸ÃÓв»Í¬ µÄ·ÃÎÊȨÏÞµÄʱºò¡£

ÖÇÄÜÖ¸Òý£¨Smart Reference£©È¡´úÁ˼òµ¥µÄÖ¸Õ룬ËüÔÚ·ÃÎʶÔÏóʱִÐÐһЩ¸½¼Ó²Ù×÷¡£ ËüµÄµäÐÍÓÃ;°üÀ¨£º

* ¶ÔÖ¸Ïòʵ¼Ê¶ÔÏóµÄÒýÓüÆÊý£¬ÕâÑùµ±¸Ã¶ÔÏóûÓÐÒýÓÃʱ£¬¿ÉÒÔ×Ô¶¯ÊÍ·ÅËü£¨Ò²³ÆÎªSmartPointers£©¡£

* µ±µÚÒ»´ÎÒýÓÃÒ»¸ö³Ö¾Ã¶ÔÏóʱ£¬½«Ëü×°ÈëÄÚ´æ¡£

* ÔÚ·ÃÎÊÒ»¸öʵ¼Ê¶ÔÏóǰ£¬¼ì²éÊÇ·ñÒѾ­Ëø¶¨ÁËËü£¬ÒÔÈ·±£ÆäËû¶ÔÏó²»ÄܸıäËü¡£

½á¹¹

Àý×Ó

ÓÅȱµã

Óŵ㣺

(1).Ö°ÔðÇåÎú

ÕæÊµµÄ½ÇÉ«¾ÍÊÇʵÏÖʵ¼ÊµÄÒµÎñÂß¼­£¬²»ÓùØÐÄÆäËû·Ç±¾Ö°ÔðµÄÊÂÎñ£¬Í¨¹ýºóÆÚµÄ´úÀíÍê³ÉÒ»¼þÍê³ÉÊÂÎñ£¬¸½´øµÄ½á¹û¾ÍÊDZà³Ì¼ò½àÇåÎú¡£

(2).´úÀí¶ÔÏó¿ÉÒÔÔÚ¿Í»§¶ËºÍÄ¿±ê¶ÔÏóÖ®¼äÆðµ½ÖнéµÄ×÷Óã¬ÕâÑùÆðµ½ÁËÖнéµÄ×÷Óúͱ£»¤ÁËÄ¿±ê¶ÔÏóµÄ×÷Óá£

(3).¸ßÀ©Õ¹ÐÔ¡£

δÍê´ýÐø.......

   
2736 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

ΪʲôҪ×ö³ÖÐø²¿Êð£¿
ÆÊÎö¡°³ÖÐø½»¸¶¡±£ºÎå¸öºËÐÄʵ¼ù
¼¯³ÉÓë¹¹½¨Ö¸ÄÏ
³ÖÐø¼¯³É¹¤¾ßµÄÑ¡Ôñ-×°ÔØ
 
Ïà¹ØÎĵµ

³ÖÐø¼¯³É½éÉÜ
ʹÓÃHudson³ÖÐø¼¯³É
³ÖÐø¼¯³ÉÖ®-ÒÀÀµ¹ÜÀí
IPD¼¯³É²úÆ·¿ª·¢¹ÜÀí
Ïà¹Ø¿Î³Ì

ÅäÖùÜÀí¡¢ÈÕ¹¹½¨Óë³ÖÐø¼¯³É
Èí¼þ¼Ü¹¹Éè¼Æ·½·¨¡¢°¸ÀýÓëʵ¼ù
µ¥Ôª²âÊÔ¡¢Öع¹¼°³ÖÐø¼¯³É
»ùÓÚAndroidµÄµ¥Ôª¡¢ÐÔÄܲâÊÔ