±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚ51cto,±¾ÎÄÖ÷ÒªÉè¼ÆÄ£Ê½µÄ11¸öÐÐΪÐÍģʽ£¬Í¨¹ýÐÐΪÐÍģʽ£¬¿ÉÒÔ¸ü¼ÓÇåÎúµØ»®·ÖÀàÓë¶ÔÏóµÄÖ°Ô𣬲¢Ñо¿ÏµÍ³ÔÚÔËÐÐʱʵÀý¶ÔÏóÖ®¼äµÄ½»»¥¡£ |
|
ÐÐΪÐÍģʽ¸ÅÊö
ÐÐΪÐÍģʽ(Behavioral Pattern)ÊǶÔÔÚ²»Í¬µÄ¶ÔÏóÖ®¼ä»®·ÖÔðÈκÍËã·¨µÄ³éÏ󻯡£
ÐÐΪÐÍģʽ²»½ö½ö¹Ø×¢ÀàºÍ¶ÔÏóµÄ½á¹¹£¬¶øÇÒÖØµã¹Ø×¢ËüÃÇÖ®¼äµÄÏ໥×÷Óá£
ÔÚϵͳÔËÐÐʱ£¬¶ÔÏó²¢²»ÊǹÂÁ¢µÄ£¬ËüÃÇ¿ÉÒÔͨ¹ýÏ໥ͨÐÅÓëÐ×÷Íê³ÉijЩ¸´ÔÓ¹¦ÄÜ£¬Ò»¸ö¶ÔÏóÔÚÔËÐÐʱҲ½«Ó°Ïìµ½ÆäËû¶ÔÏóµÄÔËÐС£
ÐÐΪÐͼò½é
Ö°ÔðÁ´Ä£Ê½(Chain of Responsibility)
ÃüÁîģʽ(Command)
½âÊÍÆ÷ģʽ(Interpreter)
µü´úÆ÷ģʽ(Iterator)
ÖнéÕßģʽ(Mediator)
±¸Íü¼ģʽ(Memento)
¹Û²ìÕßģʽ(Observer)
״̬ģʽ(State)
²ßÂÔģʽ(Strategy)
Ä£°å·½·¨Ä£Ê½(Template Method)
·ÃÎÊÕßģʽ(Visitor)
1.Ö°ÔðÁ´Ä£Ê½
1.1 ¶¯»ú
Ö°ÔðÁ´¿ÉÒÔÊÇÒ»ÌõÖ±Ïß¡¢Ò»¸ö»·»òÕßÒ»¸öÊ÷Ðνṹ£¬×î³£¼ûµÄÖ°ÔðÁ´ÊÇÖ±ÏßÐÍ£¬¼´ÑØ×ÅÒ»Ìõµ¥ÏòµÄÁ´À´´«µÝÇëÇó¡£
Á´ÉϵÄÿһ¸ö¶ÔÏó¶¼ÊÇÇëÇó´¦ÀíÕߣ¬Ö°ÔðÁ´Ä£Ê½¿ÉÒÔ½«ÇëÇóµÄ´¦ÀíÕß×éÖ¯³ÉÒ»ÌõÁ´£¬²¢Ê¹ÇëÇóÑØ×ÅÁ´´«µÝ£¬ÓÉÁ´ÉϵĴ¦ÀíÕß¶ÔÇëÇó½øÐÐÏàÓ¦µÄ´¦Àí£¬¿Í»§¶ËÎÞÐë¹ØÐÄÇëÇóµÄ´¦Àíϸ½ÚÒÔ¼°ÇëÇóµÄ´«µÝ£¬Ö»Ð轫ÇëÇó·¢Ë͵½Á´Éϼ´¿É£¬½«ÇëÇóµÄ·¢ËÍÕߺÍÇëÇóµÄ´¦ÀíÕß½âñî¡£Õâ¾ÍÊÇÖ°ÔðÁ´Ä£Ê½µÄģʽ¶¯»ú¡£
1.2 Ààͼ

Handler: ³éÏó´¦ÀíÕß
ConcreteHandler: ¾ßÌå´¦ÀíÕß
Client: ¿Í»§Àà
1.3 Óŵã
½µµÍñîºÏ¶È
¿É¼ò»¯¶ÔÏóµÄÏ໥Á¬½Ó
ÔöÇ¿¸ø¶ÔÏóÖ¸ÅÉÖ°ÔðµÄÁé»îÐÔ
Ôö¼ÓеÄÇëÇó´¦ÀíÀàºÜ·½±ã
1.4ȱµã
²»Äܱ£Ö¤ÇëÇóÒ»¶¨±»½ÓÊÕ¡£
ϵͳÐÔÄܽ«Êܵ½Ò»¶¨Ó°Ï죬¶øÇÒÔÚ½øÐдúÂëµ÷ÊÔʱ²»Ì«·½±ã£»¿ÉÄÜ»áÔì³ÉÑ»·µ÷Óá£
1.5Çé¾°
Óжà¸ö¶ÔÏó¿ÉÒÔ´¦Àíͬһ¸öÇëÇ󣬾ßÌåÄĸö¶ÔÏó´¦Àí¸ÃÇëÇóÓÉÔËÐÐʱ¿Ì×Ô¶¯È·¶¨¡£
ÔÚ²»Ã÷È·Ö¸¶¨½ÓÊÕÕßµÄÇé¿öÏ£¬Ïò¶à¸ö¶ÔÏóÖеÄÒ»¸öÌá½»Ò»¸öÇëÇó¡£
¿É¶¯Ì¬Ö¸¶¨Ò»×é¶ÔÏó´¦ÀíÇëÇó¡£
±ÈÈç
ÔçÆÚµÄJava AWTʼþÄ£ÐÍ(JDK 1.0¼°¸üÔç)
JavaÖеÄÒì³£´¦Àí»úÖÆ
2.ÃüÁîģʽ
2.1 ¶¯»ú
ÃüÁîģʽ¿ÉÒÔ¶Ô·¢ËÍÕߺͽÓÊÕÕßÍêÈ«½âñ·¢ËÍÕßÓë½ÓÊÕÕßÖ®¼äûÓÐÖ±½ÓÒýÓùØÏµ£¬·¢ËÍÇëÇóµÄ¶ÔÏóÖ»ÐèÒªÖªµÀÈçºÎ·¢ËÍÇëÇ󣬶ø²»±ØÖªµÀÈçºÎÍê³ÉÇëÇó¡£Õâ¾ÍÊÇÃüÁîģʽµÄģʽ¶¯»ú¡£
2.2 Ààͼ

Command: ³éÏóÃüÁîÀà
ConcreteCommand: ¾ßÌåÃüÁîÀà
Invoker: µ÷ÓÃÕß
Receiver: ½ÓÊÕÕß
Client:¿Í»§Àà
2.3 Óŵã
½µµÍϵͳµÄñîºÏ¶È¡£
еÄÃüÁî¿ÉÒÔºÜÈÝÒ׵ؼÓÈ뵽ϵͳÖС£
¿ÉÒԱȽÏÈÝÒ×µØÉè¼ÆÒ»¸öÃüÁî¶ÓÁкͺêÃüÁ×éºÏÃüÁ¡£
¿ÉÒÔ·½±ãµØÊµÏÖ¶ÔÇëÇóµÄUndoºÍRedo¡£
2.4 ȱµã
ʹÓÃÃüÁîģʽ¿ÉÄܻᵼÖÂijЩϵͳÓйý¶àµÄ¾ßÌåÃüÁîÀà¡£ÒòΪÕë¶Ôÿһ¸öÃüÁî¶¼ÐèÒªÉè¼ÆÒ»¸ö¾ßÌåÃüÁîÀ࣬Òò´ËijЩϵͳ¿ÉÄÜÐèÒª´óÁ¿¾ßÌåÃüÁîÀ࣬Õ⽫ӰÏìÃüÁîģʽµÄʹÓá£
2.5 Çé¾°
ϵͳÐèÒª½«ÇëÇóµ÷ÓÃÕߺÍÇëÇó½ÓÊÕÕß½âñʹµÃµ÷ÓÃÕߺͽÓÊÕÕß²»Ö±½Ó½»»¥¡£
ϵͳÐèÒªÔÚ²»Í¬µÄʱ¼äÖ¸¶¨ÇëÇó¡¢½«ÇëÇóÅŶӺÍÖ´ÐÐÇëÇó¡£
ϵͳÐèÒªÖ§³ÖÃüÁîµÄ³·Ïú(Undo)²Ù×÷ºÍ»Ö¸´(Redo)²Ù×÷¡£
ϵͳÐèÒª½«Ò»×é²Ù×÷×éºÏÔÚÒ»Æð£¬¼´Ö§³ÖºêÃüÁî¡£
È磺ίÅÉʼþÄ£ÐÍ
3.½âÊÍÆ÷ģʽ
4.µü´úÆ÷ģʽ
5.ÖнéÕßģʽ
5.1 ¶¯»ú
ÔÚÃæÏò¶ÔÏóµÄÈí¼þÉè¼ÆÓ뿪·¢¹ý³ÌÖУ¬¸ù¾Ý¡°µ¥Ò»Ö°ÔðÔÔò¡±£¬ÎÒÃÇÓ¦¸Ã¾¡Á¿½«¶ÔÏóϸ»¯£¬Ê¹ÆäÖ»¸ºÔð»ò³ÊÏÖµ¥Ò»µÄÖ°Ôð¡£
¶ÔÓÚÒ»¸öÄ£¿é£¬¿ÉÄÜÓɺܶà¶ÔÏ󹹳ɣ¬¶øÇÒÕâЩ¶ÔÏóÖ®¼ä¿ÉÄÜ´æÔÚÏ໥µÄÒýÓã¬ÎªÁ˼õÉÙ¶ÔÏóÁ½Á½Ö®¼ä¸´ÔÓµÄÒýÓùØÏµ£¬Ê¹Ö®³ÉΪһ¸öËÉñîºÏµÄϵͳ£¬ÎÒÃÇÐèҪʹÓÃÖнéÕßģʽ£¬Õâ¾ÍÊÇÖнéÕßģʽµÄģʽ¶¯»ú¡£
5.2 Ààͼ

Mediator: ³éÏóÖнéÕß
ConcreteMediator: ¾ßÌåÖнéÕß
Colleague: ³éÏóͬÊÂÀà
ConcreteColleague: ¾ßÌåͬÊÂÀà
5.3 Óŵã
¼ò»¯Á˶ÔÏóÖ®¼äµÄ½»»¥¡£
½«¸÷ͬʽâñî¡£
¼õÉÙ×ÓÀàÉú³É¡£
¿ÉÒÔ¼ò»¯¸÷ͬÊÂÀàµÄÉè¼ÆºÍʵÏÖ¡£
5.4 ȱµã
ÔÚ¾ßÌåÖнéÕßÀàÖаüº¬ÁËͬÊÂÖ®¼äµÄ½»»¥Ï¸½Ú£¬¿ÉÄܻᵼÖ¾ßÌåÖнéÕßÀà·Ç³£¸´ÔÓ£¬Ê¹µÃϵͳÄÑÒÔά»¤¡£
5.5 Çé¾°
ϵͳÖжÔÏóÖ®¼ä´æÔÚ¸´ÔÓµÄÒýÓùØÏµ£¬²úÉúµÄÏ໥ÒÀÀµ¹ØÏµ½á¹¹»ìÂÒÇÒÄÑÒÔÀí½â¡£
Ò»¸ö¶ÔÏóÓÉÓÚÒýÓÃÁËÆäËûºÜ¶à¶ÔÏó²¢ÇÒÖ±½ÓºÍÕâЩ¶ÔÏóͨÐÅ£¬µ¼ÖÂÄÑÒÔ¸´ÓøöÔÏó¡£
Ïëͨ¹ýÒ»¸öÖмäÀàÀ´·â×°¶à¸öÀàÖеÄÐÐΪ£¬¶øÓÖ²»ÏëÉú³ÉÌ«¶àµÄ×ÓÀà¡£¿ÉÒÔͨ¹ýÒýÈëÖнéÕßÀàÀ´ÊµÏÖ£¬ÔÚÖнéÕßÖж¨Òå¶ÔÏó½»»¥µÄ¹«¹²ÐÐΪ£¬Èç¹ûÐèÒª¸Ä±äÐÐΪÔò¿ÉÒÔÔö¼ÓеÄÖнéÕßÀà¡£
6.±¸Íü¼
6.1¶¯»ú
ÔÚÓ¦ÓÃÈí¼þµÄ¿ª·¢¹ý³ÌÖУ¬ºÜ¶àʱºòÎÒÃǶ¼ÐèÒª¼Ç¼һ¸ö¶ÔÏóµÄÄÚ²¿×´Ì¬¡£
ÔÚ¾ßÌåʵÏÖ¹ý³ÌÖУ¬ÎªÁËÔÊÐíÓû§È¡Ïû²»È·¶¨µÄ²Ù×÷»ò´Ó´íÎóÖлָ´¹ýÀ´£¬ÐèҪʵÏÖ±¸·ÝµãºÍ³·Ïú»úÖÆ£¬¶øÒªÊµÏÖÕâЩ»úÖÆ£¬±ØÐëÊÂÏȽ«×´Ì¬ÐÅÏ¢±£´æÔÚij´¦£¬ÕâÑù²ÅÄܽ«¶ÔÏó»Ö¸´µ½ËüÃÇÔÏȵÄ״̬¡£±¸Íü¼ģʽÊÇÒ»ÖÖ¸øÎÒÃǵÄÈí¼þÌṩºó»ÚÒ©µÄ»úÖÆ£¬Í¨¹ýËü¿ÉÒÔʹϵͳ»Ö¸´µ½Ä³Ò»Ìض¨µÄÀúʷ״̬¡£
6.2Ààͼ

Originator: Ô·¢Æ÷
Memento: ±¸Íü¼
Caretaker: ¸ºÔðÈË
6.3Óŵã
ÌṩÁËÒ»ÖÖ״̬»Ö¸´µÄʵÏÖ»úÖÆ£¬Ê¹µÃÓû§¿ÉÒÔ·½±ãµØ»Øµ½Ò»¸öÌØ¶¨µÄÀúÊ·²½Ö裬µ±ÐµÄ״̬ÎÞЧ»òÕß´æÔÚÎÊÌâʱ£¬¿ÉÒÔʹÓÃÏÈǰ´æ´¢ÆðÀ´µÄ±¸Íü¼½«×´Ì¬¸´Ô¡£
ʵÏÖÁËÐÅÏ¢µÄ·â×°£¬Ò»¸ö±¸Íü¼¶ÔÏóÊÇÒ»ÖÖÔ·¢Æ÷¶ÔÏóµÄ±íʾ£¬²»»á±»ÆäËû´úÂë¸Ä¶¯£¬ÕâÖÖģʽ¼ò»¯ÁËÔ·¢Æ÷¶ÔÏ󣬱¸Íü¼ֻ±£´æÔ·¢Æ÷µÄ״̬£¬²ÉÓöÑÕ»À´´æ´¢±¸Íü¼¶ÔÏó¿ÉÒÔʵÏÖ¶à´Î³·Ïú²Ù×÷£¬¿ÉÒÔͨ¹ýÔÚ¸ºÔðÈËÖж¨Ò弯ºÏ¶ÔÏóÀ´´æ´¢¶à¸ö±¸Íü¼¡£
6.4ȱµã
×ÊÔ´ÏûºÄ¹ý´ó£¬Èç¹ûÀàµÄ³ÉÔ±±äÁ¿Ì«¶à£¬¾Í²»¿É±ÜÃâÕ¼ÓôóÁ¿µÄÄڴ棬¶øÇÒÿ±£´æÒ»´Î¶ÔÏóµÄ״̬¶¼ÐèÒªÏûºÄÄÚ´æ×ÊÔ´£¬Èç¹ûÖªµÀÕâÒ»µã´ó¼Ò¾ÍÈÝÒ×Àí½âΪʲôһЩÌṩÁ˳·Ïú¹¦ÄܵÄÈí¼þÔÚÔËÐÐʱËùÐèµÄÄÚ´æºÍÓ²Å̿ռä±È½Ï´óÁË¡£
6.5Çé¾°
±£´æÒ»¸ö¶ÔÏóÔÚijһ¸öʱ¿ÌµÄ״̬»ò²¿·Ö״̬£¬ÕâÑùÒÔºóÐèҪʱËüÄܹ»»Ö¸´µ½ÏÈǰµÄ״̬¡£
Èç¹ûÓÃÒ»¸ö½Ó¿ÚÀ´ÈÃÆäËû¶ÔÏóµÃµ½ÕâЩ״̬£¬½«»á±©Â¶¶ÔÏóµÄʵÏÖϸ½Ú²¢ÆÆ»µ¶ÔÏóµÄ·â×°ÐÔ£¬Ò»¸ö¶ÔÏó²»Ï£ÍûÍâ½çÖ±½Ó·ÃÎÊÆäÄÚ²¿×´Ì¬£¬Í¨¹ý¸ºÔðÈË¿ÉÒÔ¼ä½Ó·ÃÎÊÆäÄÚ²¿×´Ì¬¡£
7.¹Û²ìÕßģʽ(Observer)
7.1¶¯»ú
¹Û²ìÕßģʽ(Observer Pattern)£º¶¨Òå¶ÔÏó¼äµÄÒ»ÖÖÒ»¶Ô¶àÒÀÀµ¹ØÏµ£¬Ê¹µÃÿµ±Ò»¸ö¶ÔÏó״̬·¢Éú¸Ä±äʱ£¬ÆäÏà¹ØÒÀÀµ¶ÔÏó½ÔµÃµ½Í¨Öª²¢±»×Ô¶¯¸üС£¹Û²ìÕßģʽÓÖ½Ð×ö·¢²¼-¶©ÔÄ£¨Publish/Subscribe£©Ä£Ê½¡¢Ä£ÐÍ-ÊÓͼ£¨Model/View£©Ä£Ê½¡¢Ô´-¼àÌýÆ÷£¨Source/Listener£©Ä£Ê½»ò´ÓÊôÕߣ¨Dependents£©Ä£Ê½¡£¹Û²ìÕßģʽÊÇÒ»ÖÖ¶ÔÏóÐÐΪÐÍģʽ¡£
7.2Ààͼ

Subject: Ä¿±ê
ConcreteSubject: ¾ßÌåÄ¿±ê
Observer: ¹Û²ìÕß
ConcreteObserver: ¾ßÌå¹Û²ìÕß
7.3Óŵã
¹Û²ìÕßģʽ¿ÉÒÔʵÏÖ±íʾ²ãºÍÊý¾ÝÂß¼²ãµÄ·ÖÀ룬²¢¶¨ÒåÁËÎȶ¨µÄÏûÏ¢¸üд«µÝ»úÖÆ£¬³éÏóÁ˸üнӿڣ¬Ê¹µÃ¿ÉÒÔÓи÷ÖÖ¸÷Ñù²»Í¬µÄ±íʾ²ã×÷Ϊ¾ßÌå¹Û²ìÕß½ÇÉ«¡£
¹Û²ìÕßģʽÔÚ¹Û²ìÄ¿±êºÍ¹Û²ìÕßÖ®¼ä½¨Á¢Ò»¸ö³éÏóµÄñîºÏ¡£
¹Û²ìÕßģʽ֧³Ö¹ã²¥Í¨ÐÅ¡£¹Û²ìÕßģʽ·ûºÏ¡°¿ª±ÕÔÔò¡±µÄÒªÇó¡£
7.4ȱµã
Èç¹ûÒ»¸ö¹Û²ìÄ¿±ê¶ÔÏóÓкܶàÖ±½ÓºÍ¼ä½ÓµÄ¹Û²ìÕߵϰ£¬½«ËùÓеĹ۲ìÕß¶¼Í¨Öªµ½»á»¨·ÑºÜ¶àʱ¼ä¡£
Èç¹ûÔÚ¹Û²ìÕߺ͹۲ìÄ¿±êÖ®¼äÓÐÑ»·ÒÀÀµµÄ»°£¬¹Û²ìÄ¿±ê»á´¥·¢ËüÃÇÖ®¼ä½øÐÐÑ»·µ÷Ó㬿ÉÄܵ¼ÖÂϵͳ±ÀÀ£¡£
¹Û²ìÕßģʽûÓÐÏàÓ¦µÄ»úÖÆÈù۲ìÕßÖªµÀËù¹Û²ìµÄÄ¿±ê¶ÔÏóÊÇÔõô·¢Éú±ä»¯µÄ£¬¶ø½ö½öÖ»ÊÇÖªµÀ¹Û²ìÄ¿±ê·¢ÉúÁ˱仯¡£
7.5Çé¾°
Ò»¸ö³éÏóÄ£ÐÍÓÐÁ½¸ö·½Ã棬ÆäÖÐÒ»¸ö·½ÃæÒÀÀµÓÚÁíÒ»¸ö·½Ãæ¡£½«ÕâЩ·½Ãæ·â×°ÔÚ¶ÀÁ¢µÄ¶ÔÏóÖÐʹËüÃÇ¿ÉÒÔ¸÷×Ô¶ÀÁ¢µØ¸Ä±äºÍ¸´Óá£
Ò»¸ö¶ÔÏóµÄ¸Ä±ä½«µ¼ÖÂÆäËûÒ»¸ö»ò¶à¸ö¶ÔÏóÒ²·¢Éú¸Ä±ä£¬¶ø²»ÖªµÀ¾ßÌåÓжàÉÙ¶ÔÏ󽫷¢Éú¸Ä±ä£¬¿ÉÒÔ½µµÍ¶ÔÏóÖ®¼äµÄñîºÏ¶È¡£
Ò»¸ö¶ÔÏó±ØÐë֪ͨÆäËû¶ÔÏ󣬶ø²¢²»ÖªµÀÕâЩ¶ÔÏóÊÇË¡£ÐèÒªÔÚϵͳÖд´½¨Ò»¸ö´¥·¢Á´£¬A¶ÔÏóµÄÐÐΪ½«Ó°ÏìB¶ÔÏó£¬B¶ÔÏóµÄÐÐΪ½«Ó°ÏìC¶ÔÏó¡¡£¬¿ÉÒÔʹÓù۲ìÕßģʽ´´½¨Ò»ÖÖÁ´Ê½´¥·¢»úÖÆ¡£
8.״̬ģʽ(State)
8.1¶¯»ú
״̬ģʽ(State Pattern) £ºÔÊÐíÒ»¸ö¶ÔÏóÔÚÆäÄÚ²¿×´Ì¬¸Ä±äʱ¸Ä±äËüµÄÐÐΪ£¬¶ÔÏó¿´ÆðÀ´ËƺõÐÞ¸ÄÁËËüµÄÀà¡£Æä±ðÃûΪ״̬¶ÔÏó(Objects
for States)£¬×´Ì¬Ä£Ê½ÊÇÒ»ÖÖ¶ÔÏóÐÐΪÐÍģʽ¡£
8.2Ààͼ

Context: »·¾³Àà
State: ³éÏó״̬Àà
ConcreteState: ¾ßÌå״̬Àà
8.3Óŵã
·â×°ÁËת»»¹æÔò¡£
ö¾Ù¿ÉÄܵÄ״̬£¬ÔÚö¾Ù״̬֮ǰÐèҪȷ¶¨×´Ì¬ÖÖÀà¡£
½«ËùÓÐÓëij¸ö״̬ÓйصÄÐÐΪ·Åµ½Ò»¸öÀàÖУ¬²¢ÇÒ¿ÉÒÔ·½±ãµØÔö¼ÓеÄ״̬£¬Ö»ÐèÒª¸Ä±ä¶ÔÏó״̬¼´¿É¸Ä±ä¶ÔÏóµÄÐÐΪ¡£
ÔÊÐí״̬ת»»Âß¼Óë״̬¶ÔÏóºÏ³ÉÒ»Ì壬¶ø²»ÊÇijһ¸ö¾Þ´óµÄÌõ¼þÓï¾ä¿é¡£¿ÉÒÔÈöà¸ö»·¾³¶ÔÏó¹²ÏíÒ»¸ö״̬¶ÔÏ󣬴Ӷø¼õÉÙϵͳÖжÔÏóµÄ¸öÊý¡£
8.4ȱµã
״̬ģʽµÄʹÓñØÈ»»áÔö¼ÓϵͳÀàºÍ¶ÔÏóµÄ¸öÊý¡£
״̬ģʽµÄ½á¹¹ÓëʵÏÖ¶¼½ÏΪ¸´ÔÓ£¬Èç¹ûʹÓò»µ±½«µ¼Ö³ÌÐò½á¹¹ºÍ´úÂëµÄ»ìÂÒ¡£
״̬ģʽ¶Ô¡°¿ª±ÕÔÔò¡±µÄÖ§³Ö²¢²»Ì«ºÃ£¬¶ÔÓÚ¿ÉÒÔÇл»×´Ì¬µÄ״̬ģʽ£¬Ôö¼ÓеÄ״̬ÀàÐèÒªÐÞ¸ÄÄÇЩ¸ºÔð״̬ת»»µÄÔ´´úÂ룬·ñÔòÎÞ·¨Çл»µ½ÐÂÔö״̬£»¶øÇÒÐÞ¸Äij¸ö״̬ÀàµÄÐÐΪҲÐèÐ޸ĶÔÓ¦ÀàµÄÔ´´úÂë¡£
8.5Çé¾°
¶ÔÏóµÄÐÐΪÒÀÀµÓÚËüµÄ״̬£¨ÊôÐÔ£©²¢ÇÒ¿ÉÒÔ¸ù¾ÝËüµÄ״̬¸Ä±ä¶ø¸Ä±äËüµÄÏà¹ØÐÐΪ¡£
´úÂëÖаüº¬´óÁ¿Óë¶ÔÏó״̬ÓйصÄÌõ¼þÓï¾ä£¬ÕâЩÌõ¼þÓï¾äµÄ³öÏÖ£¬»áµ¼Ö´úÂëµÄ¿Éά»¤ÐÔºÍÁé»îÐÔ±ä²î£¬²»ÄÜ·½±ãµØÔö¼ÓºÍɾ³ý״̬£¬Ê¹¿Í»§ÀàÓëÀà¿âÖ®¼äµÄñîºÏÔöÇ¿¡£ÔÚÕâЩÌõ¼þÓï¾äÖаüº¬Á˶ÔÏóµÄÐÐΪ£¬¶øÇÒÕâЩÌõ¼þ¶ÔÓ¦ÓÚ¶ÔÏóµÄ¸÷ÖÖ״̬¡£
9.²ßÂÔģʽ(Strategy)
9.1¶¯»ú
Íê³ÉÒ»ÏîÈÎÎñ£¬ÍùÍù¿ÉÒÔÓжàÖÖ²»Í¬µÄ·½Ê½£¬Ã¿Ò»ÖÖ·½Ê½³ÆÎªÒ»¸ö²ßÂÔ£¬ÎÒÃÇ¿ÉÒÔ¸ù¾Ý»·¾³»òÕßÌõ¼þµÄ²»Í¬Ñ¡Ôñ²»Í¬µÄ²ßÂÔÀ´Íê³É¸ÃÏîÈÎÎñ¡£
9.2Ààͼ

Context: »·¾³Àà
Strategy: ³éÏó²ßÂÔÀà
ConcreteStrategy: ¾ßÌå²ßÂÔÀà
9.3Óŵã
²ßÂÔģʽÌṩÁ˶ԡ°¿ª±ÕÔÔò¡±µÄÍêÃÀÖ§³Ö£¬Óû§¿ÉÒÔÔÚ²»ÐÞ¸ÄÔÓÐϵͳµÄ»ù´¡ÉÏÑ¡ÔñËã·¨»òÐÐΪ£¬Ò²¿ÉÒÔÁé»îµØÔö¼ÓеÄËã·¨»òÐÐΪ¡£
²ßÂÔģʽÌṩÁ˹ÜÀíÏà¹ØµÄËã·¨×åµÄ°ì·¨¡£
²ßÂÔģʽÌṩÁË¿ÉÒÔÌæ»»¼Ì³Ð¹ØÏµµÄ°ì·¨¡£
ʹÓòßÂÔģʽ¿ÉÒÔ±ÜÃâʹÓöàÖØÌõ¼þ×ªÒÆÓï¾ä¡£
9.4ȱµã
¿Í»§¶Ë±ØÐëÖªµÀËùÓеIJßÂÔÀ࣬²¢×ÔÐоö¶¨Ê¹ÓÃÄÄÒ»¸ö²ßÂÔÀà¡£
²ßÂÔģʽ½«Ôì³É²úÉúºÜ¶à²ßÂÔÀ࣬¿ÉÒÔͨ¹ýʹÓÃÏíԪģʽÔÚÒ»¶¨³Ì¶ÈÉϼõÉÙ¶ÔÏóµÄÊýÁ¿¡£
9.5Çé¾°
Èç¹ûÔÚÒ»¸öϵͳÀïÃæÓÐÐí¶àÀ࣬ËüÃÇÖ®¼äµÄÇø±ð½öÔÚÓÚËüÃǵÄÐÐΪ£¬ÄÇôʹÓòßÂÔģʽ¿ÉÒÔ¶¯Ì¬µØÈÃÒ»¸ö¶ÔÏóÔÚÐí¶àÐÐΪÖÐÑ¡ÔñÒ»ÖÖÐÐΪ¡£
Ò»¸öϵͳÐèÒª¶¯Ì¬µØÔÚ¼¸ÖÖËã·¨ÖÐÑ¡ÔñÒ»ÖÖ¡£
Èç¹ûÒ»¸ö¶ÔÏóÓкܶàµÄÐÐΪ£¬Èç¹û²»ÓÃÇ¡µ±µÄģʽ£¬ÕâЩÐÐΪ¾ÍÖ»ºÃʹÓöàÖØµÄÌõ¼þÑ¡ÔñÓï¾äÀ´ÊµÏÖ¡£
²»Ï£Íû¿Í»§¶ËÖªµÀ¸´Ôӵġ¢ÓëËã·¨Ïà¹ØµÄÊý¾Ý½á¹¹£¬ÔÚ¾ßÌå²ßÂÔÀàÖзâ×°Ëã·¨ºÍÏà¹ØµÄÊý¾Ý½á¹¹£¬Ìá¸ßËã·¨µÄ±£ÃÜÐÔÓ밲ȫÐÔ¡£
ÈçJava SEµÄÈÝÆ÷²¼¾Ö¹ÜÀí
10.Ä£°å·½·¨Ä£Ê½(Template Method)
10.1¶¯»ú
Ä£°å·½·¨Ä£Ê½ÊÇ»ùÓڼ̳еĴúÂ븴Óûù±¾¼¼Êõ£¬Ä£°å·½·¨Ä£Ê½µÄ½á¹¹ºÍÓ÷¨Ò²ÊÇÃæÏò¶ÔÏóÉè¼ÆµÄºËÐÄÖ®Ò»¡£ÔÚÄ£°å·½·¨Ä£Ê½ÖУ¬¿ÉÒÔ½«ÏàͬµÄ´úÂë·ÅÔÚ¸¸ÀàÖУ¬¶ø½«²»Í¬µÄ·½·¨ÊµÏÖ·ÅÔÚ²»Í¬µÄ×ÓÀàÖС£
10.2Ààͼ

AbstractClass: ³éÏóÀà
ConcreteClass: ¾ßÌå×ÓÀà
10.3Óŵã
Ä£°å·½·¨Ä£Ê½ÔÚÒ»¸öÀàÖÐÐÎʽ»¯µØ¶¨ÒåËã·¨£¬¶øÓÉËüµÄ×ÓÀàʵÏÖϸ½ÚµÄ´¦Àí¡£
Ä£°å·½·¨Ä£Ê½ÊÇÒ»ÖÖ´úÂ븴ÓõĻù±¾¼¼Êõ¡£
Ä£°å·½·¨Ä£Ê½µ¼ÖÂÒ»ÖÖ·´ÏòµÄ¿ØÖƽṹ£¬Í¨¹ýÒ»¸ö¸¸Ààµ÷ÓÃÆä×ÓÀàµÄ²Ù×÷£¬Í¨¹ý¶Ô×ÓÀàµÄÀ©Õ¹Ôö¼ÓеÄÐÐΪ£¬·ûºÏ¡°¿ª±ÕÔÔò¡±¡£
10.4ȱµã
ÿ¸ö²»Í¬µÄʵÏÖ¶¼ÐèÒª¶¨ÒåÒ»¸ö×ÓÀ࣬Õâ»áµ¼ÖÂÀàµÄ¸öÊýÔö¼Ó£¬ÏµÍ³¸ü¼ÓÅÓ´ó£¬Éè¼ÆÒ²¸ü¼Ó³éÏ󣬵«ÊǸü¼Ó·ûºÏ¡°µ¥Ò»Ö°ÔðÔÔò¡±£¬Ê¹µÃÀàµÄÄÚ¾ÛÐÔµÃÒÔÌá¸ß¡£
10.5Çé¾°
Ò»´ÎÐÔʵÏÖÒ»¸öËã·¨µÄ²»±äµÄ²¿·Ö£¬²¢½«¿É±äµÄÐÐΪÁô¸ø×ÓÀàÀ´ÊµÏÖ¡£
¸÷×ÓÀàÖй«¹²µÄÐÐΪӦ±»ÌáÈ¡³öÀ´²¢¼¯Öе½Ò»¸ö¹«¹²¸¸ÀàÖÐÒÔ±ÜÃâ´úÂëÖØ¸´¡£
¶ÔһЩ¸´ÔÓµÄËã·¨½øÐзָ½«ÆäËã·¨Öй̶¨²»±äµÄ²¿·ÖÉè¼ÆÎªÄ£°å·½·¨ºÍ¸¸Àà¾ßÌå·½·¨£¬¶øÒ»Ð©¿ÉÒԸıäµÄϸ½ÚÓÉÆä×ÓÀàÀ´ÊµÏÖ¡£
¿ØÖÆ×ÓÀàµÄÀ©Õ¹¡£
11.·ÃÎÊÕßģʽ(Visitor)
11.1¶¯»ú
·ÃÎÊÕßģʽµÄÄ¿µÄÊÇ·âװһЩʩ¼ÓÓÚijÖÖÊý¾Ý½á¹¹ÔªËØÖ®ÉϵIJÙ×÷£¬Ò»µ©ÕâЩ²Ù×÷ÐèÒªÐ޸ĵϰ£¬½ÓÊÜÕâ¸ö²Ù×÷µÄÊý¾Ý½á¹¹¿ÉÒÔ±£³Ö²»±ä¡£Îª²»Í¬ÀàÐ͵ÄÔªËØÌṩ¶àÖÖ·ÃÎʲÙ×÷·½Ê½£¬ÇÒ¿ÉÒÔÔÚ²»ÐÞ¸ÄÔÓÐϵͳµÄÇé¿öÏÂÔö¼ÓеIJÙ×÷·½Ê½£¬Õâ¾ÍÊÇ·ÃÎÊÕßģʽµÄģʽ¶¯»ú¡£
11.2Ààͼ

11.3Óŵã
ʹµÃÔö¼ÓеķÃÎʲÙ×÷±äµÃºÜÈÝÒס£
½«ÓйØÔªËضÔÏóµÄ·ÃÎÊÐÐΪ¼¯Öе½Ò»¸ö·ÃÎÊÕß¶ÔÏóÖУ¬¶ø²»ÊÇ·ÖÉ¢µ½Ò»¸ö¸öµÄÔªËØÀàÖС£
¿ÉÒÔ¿ç¹ýÀàµÄµÈ¼¶½á¹¹·ÃÎÊÊôÓÚ²»Í¬µÄµÈ¼¶½á¹¹µÄÔªËØÀà¡£ÈÃÓû§Äܹ»ÔÚ²»ÐÞ¸ÄÏÖÓÐÀà²ã´Î½á¹¹µÄÇé¿öÏ£¬¶¨Òå¸ÃÀà²ã´Î½á¹¹µÄ²Ù×÷
11.4ȱµã
Ôö¼ÓеÄÔªËØÀàºÜÀ§ÄÑ¡£ÔÚ·ÃÎÊÕßģʽÖУ¬Ã¿Ôö¼ÓÒ»¸öеÄÔªËØÀà¶¼Òâζ×ÅÒªÔÚ³éÏó·ÃÎÊÕß½ÇÉ«ÖÐÔö¼ÓÒ»¸öеijéÏó²Ù×÷£¬²¢ÔÚÿһ¸ö¾ßÌå·ÃÎÊÕßÀàÖÐÔö¼ÓÏàÓ¦µÄ¾ßÌå²Ù×÷£¬Î¥±³ÁË¡°¿ª±ÕÔÔò¡±µÄÒªÇó¡£
ÆÆ»µ·â×°¡£·ÃÎÊÕßģʽҪÇó·ÃÎÊÕß¶ÔÏó·ÃÎʲ¢µ÷ÓÃÿһ¸öÔªËØ¶ÔÏóµÄ²Ù×÷£¬ÕâÒâζ×ÅÔªËØ¶ÔÏóÓÐʱºò±ØÐ뱩¶һЩ×Ô¼ºµÄÄÚ²¿²Ù×÷ºÍÄÚ²¿×´Ì¬£¬·ñÔòÎÞ·¨¹©·ÃÎÊÕß·ÃÎÊ¡£
11.5Çé¾°
Ò»¸ö¶ÔÏó½á¹¹°üº¬ºÜ¶àÀàÐ͵ĶÔÏó£¬Ï£Íû¶ÔÕâЩ¶ÔÏóʵʩһЩÒÀÀµÆä¾ßÌåÀàÐ͵IJÙ×÷¡£ÔÚ·ÃÎÊÕßÖÐÕë¶ÔÿһÖÖ¾ßÌåµÄÀàÐͶ¼ÌṩÁËÒ»¸ö·ÃÎʲÙ×÷£¬²»Í¬ÀàÐ͵ĶÔÏó¿ÉÒÔÓв»Í¬µÄ·ÃÎʲÙ×÷¡£
ÐèÒª¶ÔÒ»¸ö¶ÔÏó½á¹¹ÖеĶÔÏó½øÐкܶ಻ͬµÄ²¢ÇÒ²»Ïà¹ØµÄ²Ù×÷£¬¶øÐèÒª±ÜÃâÈÃÕâЩ²Ù×÷¡°ÎÛȾ¡±ÕâЩ¶ÔÏóµÄÀ࣬Ҳ²»Ï£ÍûÔÚÔö¼ÓвÙ×÷ʱÐÞ¸ÄÕâЩÀà¡£·ÃÎÊÕßģʽʹµÃÎÒÃÇ¿ÉÒÔ½«Ïà¹ØµÄ·ÃÎʲÙ×÷¼¯ÖÐÆðÀ´¶¨ÒåÔÚ·ÃÎÊÕßÀàÖУ¬¶ÔÏó½á¹¹¿ÉÒÔ±»¶à¸ö²»Í¬µÄ·ÃÎÊÕßÀàËùʹÓ㬽«¶ÔÏó±¾ÉíÓë¶ÔÏóµÄ·ÃÎʲÙ×÷·ÖÀë¡£
¶ÔÏó½á¹¹ÖжÔÏó¶ÔÓ¦µÄÀàºÜÉٸı䣬µ«¾³£ÐèÒªÔڴ˶ÔÏó½á¹¹É϶¨ÒåеIJÙ×÷¡£
|