Éè¼ÆÄ£Ê½×ܽ᣺±¾ÎÄÖ÷Òª½²½âÁË£º½¨ÐÍÉè¼ÆÄ£Ê½£¬ ½á¹¹ÐÍÉè¼ÆÄ£Ê½¡£ÒÔºóÎÄÕ»áÏêϸ½éÉÜÐÐΪÐÍÉè¼ÆÄ£Ê½¡£
- ´´½¨ÐÍÉè¼ÆÄ£Ê½£º
- 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).¸ßÀ©Õ¹ÐÔ¡£
δÍê´ýÐø.......
|