±à¼ÍƼö: |
Àí½âÈí¼þ¼Ü¹¹£¬ÒÔ¼°ËüΪʲôÈç´ËÖØÒª£¬Ê¹Óòð·ÖģʽÖеÄÒµÎñÄÜÁ¦Ä£Ê½ºÍ×ÓÓòģʽ½øÐе¥ÌåÓ¦Óõ½·þÎñµÄ²ð·Ö£¬Ê¹ÓÃÁìÓòÇý¶¯Éè¼ÆÖеÄÏÞ½çÉÏÏÂÎĸÅÄîÀ´·Ö½âÊý¾Ý£¬²¢È÷þÎñ²ð·Ö±äµÃ¸üÈÝÒס£
±¾ÎÄÀ´×ÔÓÚ°¢ÀïÔÆ£¬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼¡¢ÍƼö¡£ |
|
2.1¡¡Î¢·þÎñ¼Ü¹¹µ½µ×ÊÇʲô
µÚ1ÕÂÃèÊöÁË΢·þÎñ¼Ü¹¹µÄ¹Ø¼ü˼ÏëÊÇÈçºÎ½øÐй¦Äֽܷ⡣Äã¿ÉÒÔ½«Ó¦ÓóÌÐò¹¹½¨ÎªÒ»×é·þÎñ£¬¶ø²»ÊÇ¿ª·¢Ò»¸ö´óÐ͵ĵ¥ÌåÓ¦ÓóÌÐò¡£Ò»·½Ã棬½«Î¢·þÎñ¼Ü¹¹ÃèÊöΪһÖÖ¹¦ÄÜ·Ö½âÊÇÓÐÓõġ£µ«ÁíÒ»·½Ã棬ËüÁôÏÂÁ˼¸¸öδ½â¾öµÄÎÊÌ⣬°üÀ¨£ºÎ¢·þÎñ¼Ü¹¹ÈçºÎÓë¸ü¹ã·ºµÄÈí¼þ¼Ü¹¹¸ÅÄîÏà½áºÏ£¿Ê²Ã´ÊÇ·þÎñ£¿·þÎñµÄ¹æÄ£ÓжàÖØÒª£¿
ΪÁ˻شðÕâЩÎÊÌ⣬ÎÒÃÇÐèÒªÍ˺óÒ»²½£¬¿´¿´Èí¼þ¼Ü¹¹µÄº¬Òå¡£Èí¼þµÄ¼Ü¹¹ÊÇÒ»ÖÖ³éÏóµÄ½á¹¹£¬ËüÓÉÈí¼þµÄ¸÷¸ö×é³É²¿·ÖºÍÕâЩ²¿·ÖÖ®¼äµÄÒÀÀµ¹ØÏµ¹¹³É¡£ÕýÈçÄ㽫ÔÚ±¾½ÚÖп´µ½µÄ£¬Èí¼þµÄ¼Ü¹¹ÊǶàάµÄ£¬Òò´ËÓжàÖÖ·½·¨¿ÉÒÔ¶ÔÆä½øÐÐÃèÊö¡£¼Ü¹¹ºÜÖØÒªµÄÔÒòÊÇËü¾ö¶¨ÁËÓ¦ÓóÌÐòµÄÖÊÁ¿ÊôÐÔ»òÄÜÁ¦¡£´«Í³ÉÏ£¬¼Ü¹¹µÄÄ¿±êÊÇ¿ÉÀ©Õ¹ÐÔ¡¢¿É¿¿ÐԺͰ²È«ÐÔ¡£µ«ÊǽñÌ죬¸Ã¼Ü¹¹Äܹ»¿ìËÙ°²È«µØ½»¸¶Èí¼þ£¬ÕâÒ»µã·Ç³£ÖØÒª¡£Ä㽫Á˽â΢·þÎñ¼Ü¹¹ÊÇÒ»Öּܹ¹·ç¸ñ£¬¿ÉΪӦÓóÌÐòÌṩ¸ü¸ßµÄ¿Éά»¤ÐÔ¡¢¿É²âÊÔÐԺͿɲ¿ÊðÐÔ¡£
ÎÒ½«Í¨¹ýÃèÊöÈí¼þ¼Ü¹¹µÄ¸ÅÄî¼°ÆäÖØÒªÐÔÀ´¿ªÊ¼±¾½Ú¡£½ÓÏÂÀ´£¬ÎÒ½«ÌÖÂۼܹ¹·ç¸ñµÄ¸ÅÄȻºóÎÒ½«Î¢·þÎñ¼Ü¹¹¶¨ÒåÎªÌØ¶¨µÄ¼Ü¹¹·ç¸ñ¡£ÈÃÎÒÃÇ´ÓÀí½âÈí¼þ¼Ü¹¹µÄ¸ÅÄʼ¡£
2.1.1¡¡Èí¼þ¼Ü¹¹ÊÇʲô£¬ÎªÊ²Ã´ËüÈç´ËÖØÒª
¼Ü¹¹ÏÔÈ»ºÜÖØÒª¡£ÖÁÉÙÓÐÁ½¸öרÃÅÌÖÂÛ¸ÃÖ÷ÌâµÄ»áÒ飺OreillyµÄÈí¼þ¼Ü¹¹»áÒéºÍSATURN»áÒé¡£Ðí¶à¿ª·¢ÈËÔ±µÄÄ¿±êÊdzÉΪһÃû¼Ü¹¹Ê¦¡£µ«Ê²Ã´ÊǼܹ¹£¬ÎªÊ²Ã´ËüÈç´ËÖØÒª£¿
ΪÁ˻شðÕâ¸öÎÊÌ⣬ÎÒÊ×Ïȶ¨ÒåÊõÓïÈí¼þ¼Ü¹¹µÄº¬Òå¡£Ö®ºó£¬ÎÒ½«ÌÖÂÛÓ¦ÓóÌÐòµÄ¼Ü¹¹ÊǶàάµÄ£¬²¢Ê¹ÓÃÒ»×éÊÓͼ»òÀ¶Í¼½øÐÐÃèÊö¡£È»ºóÎÒ½«Ç¿µ÷Èí¼þ¼Ü¹¹µÄÖØÒªÐÔ£¬ÒòΪËü¶ÔÓ¦ÓóÌÐòµÄÖÊÁ¿ÊôÐÔÓÐÏÔÖøµÄÓ°Ïì¡£
Èí¼þ¼Ü¹¹µÄ¶¨Òå
Èí¼þ¼Ü¹¹ÓкܶඨÒå¡£ÀýÈ磬ά»ù°Ù¿ÆÉÏÁоÙÁË´óÁ¿µÄ¶¨Òå¡£
ÎÒ×îϲ»¶µÄ¶¨ÒåÀ´×Ô¿¨ÄÍ»ù÷¡´óѧÈí¼þ¹¤³ÌÑо¿Ëù£¨www.sei.cmu.edu£©µÄLen Bass¼°ÆäͬÊ£¬ËûÃÇÔÚʹÈí¼þ¼Ü¹¹³ÉΪһÃÅѧ¿Æ·½Ãæ·¢»ÓÁ˹ؼü×÷Óá£ËûÃǶ¨ÒåµÄÈí¼þ¼Ü¹¹ÈçÏ£º
¼ÆËã»úϵͳµÄÈí¼þ¼Ü¹¹Êǹ¹½¨Õâ¸öϵͳËùÐèÒªµÄÒ»×é½á¹¹£¬°üÀ¨Èí¼þÔªËØ¡¢ËüÃÇÖ®¼äµÄ¹ØÏµÒÔ¼°Á½ÕßµÄÊôÐÔ¡£
¡ªBassµÈÖø¡¶Documenting Software Architectures: Views
and Beyond¡·
ÕâÏÔÈ»ÊÇÒ»¸ö·Ç³£³éÏóµÄ¶¨Òå¡£µ«ÆäʵÖÊÊÇÓ¦ÓóÌÐòµÄ¼Ü¹¹Êǽ«Èí¼þ·Ö½âÎªÔªËØ£¨element£©ºÍÕâÐ©ÔªËØÖ®¼äµÄ¹ØÏµ£¨relation£©¡£ÓÉÓÚÒÔÏÂÁ½¸öÔÒò£¬·Ö½âºÜÖØÒª£º
Ëü´Ù½øÁËÀͶ¯ºÍ֪ʶµÄ·Ö¹¤¡£Ëüʹ¾ßÓÐÌØ¶¨×¨ÒµÖªÊ¶µÄÈËÃÇ£¨»ò¶à¸öÍŶӣ©Äܹ»¾ÍÓ¦ÓóÌÐò¸ßЧµØÐͬ¹¤×÷¡£
Ëü¶¨ÒåÁËÈí¼þÔªËØµÄ½»»¥·½Ê½¡£
½«Èí¼þ·Ö½â³ÉÔªËØÒÔ¼°¶¨ÒåÕâÐ©ÔªËØÖ®¼äµÄ¹ØÏµ£¬¾ö¶¨ÁËÈí¼þµÄÄÜÁ¦¡£
Èí¼þ¼Ü¹¹µÄ4+1ÊÓͼģÐÍ
´Ó¸ü¾ßÌåµÄ½Ç¶È¶øÑÔ£¬Ó¦ÓóÌÐòµÄ¼Ü¹¹¿ÉÒÔ´Ó¶à¸öÊÓ½ÇÀ´¿´£¬¾ÍÏñ½¨Öþ¼Ü¹¹£¬Ò»°ãÓнṹ¡¢¹ÜÏß¡¢µçÆøµÈ¶à¸ö¼Ü¹¹Êӽǡ£Phillip
KrutchenÔÚËû¾µäµÄÂÛÎÄ¡¶Architectural Blueprints ¡ª
The 4+1 View Model of Software Architecture¡·ÖÐÌá³öÁËÈí¼þ¼Ü¹¹µÄ4+1ÊÓͼ¡£
ͼ2-1չʾµÄÕâÌ×ÊÓͼ¶¨ÒåÁËËĸö²»Í¬µÄÈí¼þ¼Ü¹¹ÊÓͼ£¬Ã¿Ò»¸öÊÓͼ¶¼Ö»ÃèÊö¼Ü¹¹µÄÒ»¸öÌØ¶¨·½Ã档ÿ¸öÊÓͼ°üÀ¨Ò»Ð©Ìض¨µÄÈí¼þÔªËØºÍËüÃÇÏ໥֮¼äµÄ¹ØÏµ¡£
ÿ¸öÊÓͼµÄÄ¿µÄÈçÏ£º
Âß¼ÊÓͼ£º¿ª·¢ÈËÔ±´´½¨µÄÈí¼þÔªËØ¡£ÔÚÃæÏò¶ÔÏóµÄÓïÑÔÖУ¬ÕâÐ©ÔªËØÊÇÀàºÍ°ü¡£ËüÃÇÖ®¼äµÄ¹ØÏµÊÇÀàºÍ°üÖ®¼äµÄ¹ØÏµ£¬°üÀ¨¼Ì³Ð¡¢¹ØÁªºÍÒÀÀµ¡£
ʵÏÖÊÓͼ£º¹¹½¨±àÒëϵͳµÄÊä³ö¡£´ËÊÓͼÓɱíʾ´ò°ü´úÂëµÄÄ£¿éºÍ×é¼þ×é³É£¬×é¼þÊÇÓÉÒ»¸ö»ò¶à¸öÄ£¿é×é³ÉµÄ¿ÉÖ´Ðлò¿É²¿Êðµ¥Ôª¡£ÔÚJavaÖУ¬Ä£¿éÊÇJARÎļþ£¬×é¼þͨ³£ÊÇWARÎļþ»ò¿ÉÖ´ÐÐJARÎļþ¡£ËüÃÇÖ®¼äµÄ¹ØÏµ°üÀ¨Ä£¿éÖ®¼äµÄÒÀÀµ¹ØÏµÒÔ¼°×é¼þºÍÄ£¿éÖ®¼äµÄ×éºÏ¹ØÏµ¡£
½ø³ÌÊÓͼ£ºÔËÐÐʱµÄ×é¼þ¡£Ã¿¸öÔªËØ¶¼ÊÇÒ»¸ö½ø³Ì£¬½ø³ÌÖ®¼äµÄ¹ØÏµ´ú±í½ø³Ì¼äͨÐÅ¡£
²¿ÊðÊÓͼ£º½ø³ÌÈçºÎÓ³Éäµ½»úÆ÷¡£´ËÊÓͼÖеÄÔªËØÓÉ£¨ÎïÀí»òÐéÄ⣩¼ÆËã»úºÍ½ø³Ì×é³É¡£»úÆ÷Ö®¼äµÄ¹ØÏµ´ú±íÍøÂç¡£¸ÃÊÓͼ»¹ÃèÊöÁ˽ø³ÌºÍ»úÆ÷Ö®¼äµÄ¹ØÏµ¡£
³ýÁËÕâËĸöÊÓͼÒÔÍ⣬4+1ÖеÄ+1ÊÇÖ¸³¡¾°£¬Ëü¸ºÔð°ÑÊÓͼ´®ÁªÔÚÒ»Æð¡£Ã¿¸ö³¡¾°¸ºÔðÃèÊöÔÚÒ»¸öÊÓͼÖеĶà¸ö¼Ü¹¹ÔªËØÈçºÎÐ×÷£¬ÒÔÍê³ÉÒ»¸öÇëÇó¡£ÀýÈ磬ÔÚÂß¼ÊÓͼÖеij¡¾°£¬Õ¹ÏÖÁËÀàÊÇÈçºÎÐ×÷µÄ¡£Í¬Ñù£¬ÔÚ½ø³ÌÊÓͼÖеij¡¾°£¬Õ¹ÏÖÁ˽ø³ÌÊÇÈçºÎÐ×÷µÄ¡£
4+1ÊÓͼÊÇÃèÊöÓ¦ÓóÌÐò¼Ü¹¹µÄ¾ø¼Ñ·½Ê½¡£Ã¿Ò»¸öÊÓͼ¶¼ÃèÊöÁ˼ܹ¹µÄÒ»¸öÖØÒª²àÃæ¡£³¡¾°°ÑÊÓͼÖеÄÔªËØÈçºÎÐ×÷´®ÁªÔÚÒ»Æð¡£ÏÖÔÚÎÒÃÇÀ´¿´¿´ÎªÊ²Ã´¼Ü¹¹ÊÇÈç´ËÖØÒª¡£
Ϊʲô¼Ü¹¹Èç´ËÖØÒª
Ó¦ÓóÌÐòÓÐÁ½¸ö²ãÃæµÄÐèÇó¡£µÚÒ»ÀàÊǹ¦ÄÜÐÔÐèÇó£¬ÕâЩÐèÇó¾ö¶¨Ò»¸öÓ¦ÓóÌÐò×öʲô¡£ÕâЩͨ³£¶¼°üº¬ÔÚÓÃÀý£¨use
case£©»òÕßÓû§¹ÊÊ£¨user story£©ÖС£Ó¦Óõļܹ¹Æäʵ¸úÕâЩ¹¦ÄÜÐÔÐèÇóûʲô¹ØÏµ¡£¹¦ÄÜÐÔÐèÇó¿ÉÒÔͨ¹ýÈÎÒâµÄ¼Ü¹¹À´ÊµÏÖ£¬ÉõÖÁÊǷdz£Ôã¸âµÄ´óÄàÇò¼Ü¹¹¡£
¼Ü¹¹µÄÖØÒªÐÔÔÚÓÚ£¬Ëü°ïÖúÓ¦ÓóÌÐòÂú×ãÁ˵ڶþÀàÐèÇ󣺷ǹ¦ÄÜÐÔÐèÇó¡£ÎÒÃǰÑÕâÀàÐèÇóÒ²³ÆÖ®ÎªÖÊÁ¿ÊôÐÔÐèÇ󣬻òÕß¼ò³ÆÎª¡°ÄÜÁ¦¡±¡£ÕâЩ·Ç¹¦ÄÜÐÔÐèÇó¾ö¶¨Ò»¸öÓ¦ÓóÌÐòÔÚÔËÐÐʱµÄÖÊÁ¿£¬±ÈÈç¿ÉÀ©Õ¹ÐԺͿɿ¿ÐÔ¡£ËüÃÇÒ²¾ö¶¨ÁË¿ª·¢½×¶ÎµÄÖÊÁ¿£¬°üÀ¨¿Éά»¤ÐÔ¡¢¿É²âÊÔÐÔ¡¢¿ÉÀ©Õ¹ÐԺͿɲ¿ÊðÐÔ¡£ÎªÓ¦ÓóÌÐòËùÑ¡ÔñµÄ¼Ü¹¹½«¾ö¶¨ÕâЩÖÊÁ¿ÊôÐÔ¡£
2.1.2¡¡Ê²Ã´ÊǼܹ¹µÄ·ç¸ñ
ÔÚÎïÀíÊÀ½çÖУ¬½¨ÖþÎïµÄ½¨Öþͨ³£×ñÑÌØ¶¨µÄ·ç¸ñ£¬ÀýÈçά¶àÀûÑÇʽ¡¢ÃÀ¹ú¹¤½³Ê½»ò×°ÊÎÒÕÊõʽ¡£Ã¿ÖÖ·ç¸ñ¶¼ÊÇһϵÁÐÉè¼Æ¾ö²ß£¬ÏÞÖÆÁ˽¨ÖþµÄÌØÕ÷ºÍ½¨Öþ²ÄÁÏ¡£½¨Öþ·ç¸ñµÄ¸ÅÄîÒ²ÊÊÓÃÓÚÈí¼þ¡£David
GarlanºÍMary Shaw£¨An Introduction to Software Architecture£¬January
1994£©ÕâÁ½Î»Èí¼þ¼Ü¹¹Ñ§¿ÆµÄÏÈÇý¶¨ÒåÁËÈçϼܹ¹·ç¸ñ £º
Òò´Ë£¬¼Ü¹¹·ç¸ñ¸ù¾Ý½á¹¹×é֯ģʽ¶¨ÒåÁËһϵÁдËÀàϵͳ¡£¸ü¾ßÌåµØËµ£¬¼Ü¹¹·ç¸ñÈ·¶¨¿ÉÒÔÔڸ÷ç¸ñµÄʵÀýÖÐʹÓõÄ×é¼þºÍÁ¬½ÓÆ÷µÄ´Ê»ã±í£¬ÒÔ¼°¹ØÓÚÈçºÎ×éºÏËüÃǵÄÒ»×éÔ¼Êø¡£
ÌØ¶¨µÄ¼Ü¹¹·ç¸ñÌṩÁËÓÐÏÞµÄÔªËØ£¨×é¼þ£©ºÍ¹ØÏµ£¨Á¬½ÓÆ÷£©£¬Äã¿ÉÒÔ´ÓÖж¨ÒåÓ¦ÓóÌÐò¼Ü¹¹µÄÊÓͼ¡£Ó¦ÓóÌÐòͨ³£Ê¹ÓöàÖּܹ¹·ç¸ñµÄ×éºÏ¡£ÀýÈ磬ÔÚ±¾½ÚµÄºóÃæ£¬ÎÒ½«ÃèÊöµ¥Ìå¼Ü¹¹ÊÇÈçºÎ½«ÊµÏÖÊÓͼ¹¹ÔìΪµ¥¸ö£¨¿ÉÖ´ÐÐÓë¿É²¿Êð£©×é¼þµÄ¼Ü¹¹Ñùʽ¡£Î¢·þÎñ¼Ü¹¹½«Ó¦ÓóÌÐò¹¹ÔìΪһ×éËÉÉ¢ñîºÏµÄ·þÎñ¡£
·Ö²ãʽ¼Ü¹¹·ç¸ñ
¼Ü¹¹µÄµäÐÍÀý×ÓÊÇ·Ö²ã¼Ü¹¹¡£·Ö²ã¼Ü¹¹½«Èí¼þÔªËØ°´¡°²ã¡±µÄ·½Ê½×éÖ¯¡£Ã¿¸ö²ã¶¼ÓÐÃ÷È·¶¨ÒåµÄÖ°Ôð¡£·Ö²ã¼Ü¹¹»¹ÏÞÖÆÁ˲ãÖ®¼äµÄÒÀÀµ¹ØÏµ¡£Ã¿Ò»²ãÖ»ÄÜÒÀÀµÓÚ½ôÁÚÆäÏ·½µÄ²ã£¨Èç¹ûÑϸñ·Ö²ã£©»òÆäÏÂÃæµÄÈκβ㡣
¿ÉÒÔ½«·Ö²ã¼Ü¹¹Ó¦ÓÃÓÚÇ°ÃæÌÖÂÛµÄËĸöÊÓͼÖеÄÈκÎÒ»¸ö¡£Á÷ÐеÄÈý²ã¼Ü¹¹ÊÇÓ¦ÓÃÓÚÂß¼ÊÓͼµÄ·Ö²ã¼Ü¹¹¡£Ëü½«Ó¦ÓóÌÐòµÄÀà×éÖ¯µ½ÒÔϲãÖУº
±íÏֲ㣺°üº¬ÊµÏÖÓû§½çÃæ»òÍⲿAPIµÄ´úÂë¡£
- ÒµÎñÂß¼²ã£º°üº¬ÒµÎñÂß¼¡£
Êý¾Ý³Ö¾Ã»¯²ã£ºÊµÏÖÓëÊý¾Ý¿â½»»¥µÄÂß¼¡£
·Ö²ã¼Ü¹¹ÊǼܹ¹·ç¸ñµÄÒ»¸öºÜºÃµÄÀý×Ó£¬µ«ËüȷʵÓÐһЩÃ÷ÏԵı׶ˣº
- µ¥¸ö±íÏֲ㣺ËüÎÞ·¨Õ¹ÏÖÓ¦ÓóÌÐò¿ÉÄܲ»½ö½öÓɵ¥¸öϵͳµ÷ÓõÄÊÂʵ¡£
µ¥Ò»Êý¾Ý³Ö¾Ã»¯²ã£ºËüÎÞ·¨Õ¹ÏÖÓ¦ÓóÌÐò¿ÉÄÜÓë¶à¸öÊý¾Ý¿â½øÐн»»¥µÄÊÂʵ¡£
½«ÒµÎñÂß¼²ã¶¨ÒåΪÒÀÀµÓÚÊý¾Ý³Ö¾Ã»¯²ã£ºÀíÂÛÉÏ£¬ÕâÑùµÄÒÀÀµÐÔ»á·Á°ÄãÔÚûÓÐÊý¾Ý¿âµÄÇé¿öϲâÊÔÒµÎñÂß¼¡£
´ËÍ⣬·Ö²ã¼Ü¹¹´íÎ󵨱íʾÁ˾«ÐÄÉè¼ÆµÄÓ¦ÓóÌÐòÖеÄÒÀÀµ¹ØÏµ¡£ÒµÎñÂ߼ͨ³£¶¨ÒåÊý¾Ý·ÃÎÊ·½·¨µÄ½Ó¿Ú»ò½Ó¿Ú¿â¡£Êý¾Ý³Ö¾Ã»¯²ãÔò¶¨ÒåÁËʵÏÖ´æ´¢¿â½Ó¿ÚµÄDAOÀà¡£»»¾ä»°Ëµ£¬ÒÀÀµ¹ØÏµÓë·Ö²ã¼Ü¹¹ËùÃèÊöµÄÏà·´¡£
ÈÃÎÒÃÇ¿´Ò»Ï¿˷þÕâЩ±×¶ËµÄÌæ´ú¼Ü¹¹£ºÁù±ßÐμܹ¹¡£
¹ØÓڼܹ¹·ç¸ñµÄÁù±ßÐÎ
Áù±ßÐμܹ¹ÊÇ·Ö²ã¼Ü¹¹·ç¸ñµÄÌæ´úÆ·¡£Èçͼ2-2Ëùʾ£¬Áù±ßÐμܹ¹·ç¸ñÑ¡ÔñÒÔÒµÎñÂ߼ΪÖÐÐĵķ½Ê½×éÖ¯Âß¼ÊÓͼ¡£Ó¦ÓóÌÐò¾ßÓÐÒ»¸ö»ò¶à¸öÈëÕ¾ÊÊÅäÆ÷£¬¶ø²»ÊDZíʾ²ã£¬Ëüͨ¹ýµ÷ÓÃÒµÎñÂß¼À´´¦ÀíÀ´×ÔÍⲿµÄÇëÇó¡£Í¬Ñù£¬Ó¦ÓóÌÐò¾ßÓÐÒ»¸ö»ò¶à¸ö³öÕ¾ÊÊÅäÆ÷£¬¶ø²»ÊÇÊý¾Ý³Ö¾Ã»¯²ã£¬ÕâЩ³öÕ¾ÊÊÅäÆ÷ÓÉÒµÎñÂß¼µ÷Óò¢µ÷ÓÃÍⲿӦÓóÌÐò¡£´Ë¼Ü¹¹µÄÒ»¸ö¹Ø¼üÌØÐÔºÍÓŵãÊÇÒµÎñÂß¼²»ÒÀÀµÓÚÊÊÅäÆ÷¡£Ïà·´£¬¸÷ÖÖÊÊÅäÆ÷¶¼ÒÀÀµÒµÎñÂß¼¡£
ÒµÎñÂß¼¾ßÓÐÒ»¸ö»ò¶à¸ö¶Ë¿Ú£¨port£©¡£¶Ë¿Ú¶¨ÒåÁËÒ»×é²Ù×÷£¬¹ØÓÚÒµÎñÂß¼ÈçºÎÓëÍⲿ½»»¥¡£ÀýÈ磬ÔÚJavaÖУ¬¶Ë¿Úͨ³£ÊÇJava½Ó¿Ú¡£ÓÐÁ½Öֶ˿ڣºÈëÕ¾ºÍ³öÕ¾¶Ë¿Ú¡£ÈëÕ¾¶Ë¿ÚÊÇÒµÎñÂß¼¹«¿ªµÄAPI£¬ËüʹÍⲿӦÓóÌÐò¿ÉÒÔµ÷ÓÃËü¡£ÈëÕ¾¶Ë¿ÚµÄÒ»¸öʵÀýÊÇ·þÎñ½Ó¿Ú£¬Ëü¶¨Òå·þÎñµÄ¹«¹²·½·¨¡£³öÕ¾¶Ë¿ÚÊÇÒµÎñÂß¼µ÷ÓÃÍⲿϵͳµÄ·½Ê½¡£³öÕ¾¶Ë¿ÚµÄÒ»¸öʵÀýÊÇ´æ´¢¿â½Ó¿Ú£¬Ëü¶¨ÒåÊý¾Ý·ÃÎʲÙ×÷µÄ¼¯ºÏ¡£
ÒµÎñÂß¼µÄÖÜΧÊÇÊÊÅäÆ÷¡£Óë¶Ë¿ÚÒ»Ñù£¬ÓÐÁ½ÖÖÀàÐ͵ÄÊÊÅäÆ÷£ºÈëÕ¾ºÍ³öÕ¾¡£ÈëÕ¾ÊÊÅäÆ÷ͨ¹ýµ÷ÓÃÈëÕ¾¶Ë¿ÚÀ´´¦ÀíÀ´×ÔÍⲿÊÀ½çµÄÇëÇó¡£ÈëÕ¾ÊÊÅäÆ÷µÄÒ»¸öʵÀýÊÇSpring
MVC Controller£¬ËüʵÏÖÒ»×éREST½Ó¿Ú£¨endpoint£©»òÒ»×éWebÒ³Ãæ¡£ÁíÒ»¸öʵÀýÊǶ©ÔÄÏûÏ¢µÄÏûÏ¢´úÀí¿Í»§¶Ë¡£¶à¸öÈëÕ¾ÊÊÅäÆ÷¿ÉÒÔµ÷ÓÃÏàͬµÄÈëÕ¾¶Ë¿Ú¡£
³öÕ¾ÊÊÅäÆ÷ʵÏÖ³öÕ¾¶Ë¿Ú£¬²¢Í¨¹ýµ÷ÓÃÍⲿӦÓóÌÐò»ò·þÎñ´¦ÀíÀ´×ÔÒµÎñÂß¼µÄÇëÇó¡£³öÕ¾ÊÊÅäÆ÷µÄÒ»¸öʵÀýÊÇʵÏÖ·ÃÎÊÊý¾Ý¿âµÄ²Ù×÷µÄÊý¾Ý·ÃÎʶÔÏó£¨DAO£©Àà¡£ÁíÒ»¸öʵÀýÊǵ÷ÓÃÔ¶³Ì·þÎñµÄ´úÀíÀà¡£³öÕ¾ÊÊÅäÆ÷Ò²¿ÉÒÔ·¢²¼Ê¼þ¡£
Áù±ßÐμܹ¹·ç¸ñµÄÒ»¸öÖØÒªºÃ´¦ÊÇËü½«ÒµÎñÂß¼ÓëÊÊÅäÆ÷Öаüº¬µÄ±íʾ²ãºÍÊý¾Ý·ÃÎʲãµÄÂß¼·ÖÀ뿪À´¡£ÒµÎñÂß¼²»ÒÀÀµÓÚ±íʾ²ãÂß¼»òÊý¾Ý·ÃÎʲãÂß¼¡£
ÓÉÓÚÕâÖÖ·ÖÀ룬µ¥¶À²âÊÔÒµÎñÂß¼ÒªÈÝÒ׵öࡣÁíÒ»¸öºÃ´¦ÊÇËü¸ü׼ȷµØ·´Ó³ÁËÏÖ´úÓ¦ÓóÌÐòµÄ¼Ü¹¹¡£¿ÉÒÔͨ¹ý¶à¸öÊÊÅäÆ÷µ÷ÓÃÒµÎñÂß¼£¬Ã¿¸öÊÊÅäÆ÷ʵÏÖÌØ¶¨µÄAPI»òÓû§½çÃæ¡£ÒµÎñÂß¼»¹¿ÉÒÔµ÷Óöà¸öÊÊÅäÆ÷£¬Ã¿¸öÊÊÅäÆ÷µ÷Óò»Í¬µÄÍⲿϵͳ¡£Áù±ßÐμܹ¹ÊÇÃèÊö΢·þÎñ¼Ü¹¹ÖÐÿ¸ö·þÎñµÄ¼Ü¹¹µÄºÃ·½·¨¡£
·Ö²ã¼Ü¹¹ºÍÁù±ßÐμܹ¹¶¼ÊǼܹ¹·ç¸ñµÄʵÀý¡£Ã¿¸ö¶¼¶¨ÒåÁ˼ܹ¹µÄ¹¹½¨¿é£¨ÔªËØ£©£¬²¢¶ÔËüÃÇÖ®¼äµÄ¹ØÏµÊ©¼ÓÁËÔ¼Êø¡£Áù±ßÐμܹ¹ºÍ·Ö²ã¼Ü¹¹£¨Èý²ã¼Ü¹¹£©¹¹³ÉÁËÈí¼þµÄÂß¼ÊÓͼ¡£ÏÖÔÚÈÃÎÒÃǽ«Î¢·þÎñ¼Ü¹¹¶¨ÒåΪ¹¹³ÉÈí¼þµÄʵÏÖÊÓͼµÄ¼Ü¹¹·ç¸ñ¡£
2.1.3¡¡Î¢·þÎñ¼Ü¹¹ÊÇÒ»Öּܹ¹·ç¸ñ
Ç°ÃæÒѾÌÖÂÛ¹ý4+1ÊÓͼģÐͺͼܹ¹·ç¸ñ£¬ËùÒÔÏÖÔÚ¿ÉÒÔ¿ªÊ¼¶¨Òåµ¥Ìå¼Ü¹¹ºÍ΢·þÎñ¼Ü¹¹¡£ËüÃǶ¼ÊǼܹ¹·ç¸ñ¡£µ¥Ìå¼Ü¹¹ÊÇÒ»Öּܹ¹·ç¸ñ£¬ËüµÄʵÏÖÊÓͼÊǵ¥¸ö×é¼þ£ºµ¥¸ö¿ÉÖ´ÐÐÎļþ»òWARÎļþ¡£Õâ¸ö¶¨Ò岢ûÓÐ˵Ã÷ÆäËûµÄÊÓͼ¡£ÀýÈ磬µ¥ÌåÓ¦ÓóÌÐò¿ÉÒÔ¾ßÓÐÁù±ßÐμܹ¹·ç¸ñµÄÂß¼ÊÓͼ¡£
΢·þÎñ¼Ü¹¹Ò²ÊÇÒ»Öּܹ¹·ç¸ñ¡£ËüµÄʵÏÖÊÓͼÓɶà¸ö×é¼þ¹¹³É£ºÒ»×é¿ÉÖ´ÐÐÎļþ»òWARÎļþ¡£ËüµÄ×é¼þÊÇ·þÎñ£¬Á¬½ÓÆ÷ÊÇʹÕâЩ·þÎñÄܹ»Ð×÷µÄͨÐÅÐÒ顣ÿ¸ö·þÎñ¶¼ÓÐ×Ô¼ºµÄÂß¼ÊÓͼ¼Ü¹¹£¬Í¨³£Ò²ÊÇÁù±ßÐμܹ¹¡£Í¼2-3ÏÔʾÁËFTGOÓ¦ÓóÌÐò¿ÉÄܵÄ΢·þÎñ¼Ü¹¹¡£´Ë¼Ü¹¹ÖеķþÎñ¶ÔÓ¦ÓÚÒµÎñ¹¦ÄÜ£¬ÀýÈç¶©µ¥¹ÜÀíºÍ²Í¹Ý¹ÜÀí¡£

ÔÚ±¾ÕºóÃæ£¬ÎÒ½«ÃèÊöÒµÎñÄÜÁ¦£¨business capability£©µÄº¬Òå¡£·þÎñÖ®¼äµÄÁ¬½ÓÆ÷ʹÓýø³Ì¼äͨÐÅ»úÖÆ£¨ÈçREST
APIºÍÒì²½ÏûÏ¢£©ÊµÏÖ¡£µÚ3Õ½«¸üÏêϸµØÌÖÂÛ½ø³Ì¼äͨÐÅ¡£

΢·þÎñ¼Ü¹¹Ç¿¼ÓµÄÒ»¸ö¹Ø¼üÔ¼ÊøÊÇ·þÎñËÉñîºÏ¡£Òò´Ë£¬·þÎñÖ®¼äµÄÐ×÷·½Ê½´æÔÚÒ»¶¨ÏÞÖÆ¡£ÎªÁ˽âÊÍÕâЩÏÞÖÆ£¬ÎÒ½«³¢ÊÔ¶¨ÒåʲôÊÇ·þÎñ£¬½âÊÍËÉñîºÏÒâζ×Åʲô£¬²¢¸æËßÄãΪʲôÕâºÜÖØÒª¡£
ʲôÊÇ·þÎñ
·þÎñÊÇÒ»¸öµ¥Ò»µÄ¡¢¿É¶ÀÁ¢²¿ÊðµÄÈí¼þ×é¼þ£¬ËüʵÏÖÁËһЩÓÐÓõŦÄÜ¡£Í¼2-4ÏÔʾÁË·þÎñµÄÍⲿÊÓͼ£¬ÔÚ´ËʾÀýÖÐÊÇOrder
Service¡£·þÎñ¾ßÓÐAPI£¬ÎªÆä¿Í»§¶ËÌṩ¶Ô¹¦ÄܵķÃÎÊ¡£ÓÐÁ½ÖÖÀàÐ͵IJÙ×÷£ºÃüÁîºÍ²éѯ¡£APIÓÉÃüÁî¡¢²éѯºÍʼþ×é³É¡£ÃüÁîÈçcreateOrder()Ö´ÐвÙ×÷²¢¸üÐÂÊý¾Ý¡£²éѯ£¬ÈçfindOrderById()¼ìË÷Êý¾Ý¡£·þÎñ»¹·¢²¼ÓÉÆä¿Í»§¶ËʹÓõÄʼþ£¬ÀýÈçOrderCreated¡£
·þÎñµÄAPI·â×°ÁËÆäÄÚ²¿ÊµÏÖ¡£Óëµ¥Ìå¼Ü¹¹²»Í¬£¬¿ª·¢ÈËÔ±ÎÞ·¨Èƹý·þÎñµÄAPIÖ±½Ó·ÃÎÊ·þÎñÄÚ²¿µÄ·½·¨»òÊý¾Ý¡£Òò´Ë£¬Î¢·þÎñ¼Ü¹¹Ç¿ÖÆÊµÏÖÁËÓ¦ÓóÌÐòµÄÄ£¿é»¯¡£
΢·þÎñ¼Ü¹¹ÖеÄÿÏî·þÎñ¶¼ÓÐ×Ô¼ºµÄ¼Ü¹¹£¬¿ÉÄÜ»¹ÓжÀÌØµÄ¼¼ÊõÕ»¡£µ«ÊǵäÐ͵ķþÎñÍùÍù¶¼¾ßÓÐÁù±ßÐμܹ¹¡£ÆäAPIÓÉÓë·þÎñµÄÒµÎñÂß¼½»»¥µÄÊÊÅäÆ÷ʵÏÖ¡£²Ù×÷ÊÊÅäÆ÷µ÷ÓÃÒµÎñÂß¼£¬Ê¼þÊÊÅäÆ÷¶ÔÍâ·¢²¼ÒµÎñÂß¼²úÉúµÄʼþ¡£ 
API¶¨ÒåÁËÓɿͻ§¶Ëµ÷ÓõIJÙ×÷¡£ÓÐÁ½ÖÖÀàÐ͵IJÙ×÷£ºÃüÁîÓÃÀ´¸üÐÂÊý¾Ý£¬²éѯÓÃÀ´¼ìË÷Êý¾Ý¡£µ±·þÎñµÄÊý¾Ý·¢Éú¸ü¸Äʱ£¬·þÎñ»á·¢²¼¿É¹©¿Í»§¶Ë¶©ÔĵÄʼþ
ÔÚµÚ12ÕÂÌÖÂÛ²¿Êð¼¼Êõʱ£¬Ä㽫¿´µ½·þÎñµÄʵÏÖÊÓͼ¿ÉÒÔ²ÉÓöàÖÖÐÎʽ¡£¸Ã×é¼þ¿ÉÒÔÊǶÀÁ¢½ø³Ì£¬ÔÚÈÝÆ÷ÖÐÔËÐеÄWebÓ¦ÓóÌÐò»òOSGI°ü¡¢ÔÆÖ÷»ú»òServerless¼¼Êõ£¬µÈµÈ¡£µ«ÊÇ£¬Ò»¸ö»ù±¾ÒªÇóÊÇ·þÎñ¾ßÓÐAPI²¢ÇÒ¿ÉÒÔ¶ÀÁ¢²¿Êð¡£
ʲôÊÇËÉñîºÏ
΢·þÎñ¼Ü¹¹µÄ×îºËÐÄÌØÐÔÊÇ·þÎñÖ®¼äµÄËÉñîºÏÐÔ£¨https://en.wikipedia.org/wiki/Loose_coupling£©
¡£·þÎñÖ®¼äµÄ½»»¥²ÉÓÃAPIÍê³É£¬ÕâÑù×ö¾Í·â×°ÁË·þÎñµÄʵÏÖϸ½Ú¡£ÕâÔÊÐí·þÎñÔÚ²»Ó°Ïì¿Í»§¶ËµÄÇé¿öÏ£¬¶ÔʵÏÖ·½Ê½×ö³öÐ޸ġ£ËÉñîºÏ·þÎñÊǸÄÉÆ¿ª·¢Ð§ÂÊ¡¢ÌáÉý¿Éά»¤ÐԺͿɲâÊÔÐԵĹؼü¡£Ð¡µÄ¡¢ËÉñîºÏµÄ·þÎñ¸üÈÝÒ×±»Àí½â¡¢Ð޸ĺͲâÊÔ¡£
ÎÒÃÇͨ¹ýAPIÀ´ÊµÏÖËÉñîºÏ·þÎñÖ®¼äµÄе÷µ÷Óã¬ÕâÑù¾Í±ÜÃâÁËÍâ½ç¶Ô·þÎñµÄÊý¾Ý¿âµÄÖ±½Ó·ÃÎʺ͵÷Ó᣷þÎñ×ÔÉíµÄ³Ö¾Ã»¯Êý¾Ý¾ÍÈçͬÀàµÄ˽ÓÐÊôÐÔÒ»Ñù£¬ÊDz»¶ÔÍâµÄ¡£±£Ö¤Êý¾ÝµÄ˽ÓÐÊôÐÔÊÇʵÏÖËÉñîºÏµÄǰÌáÖ®Ò»¡£ÕâÑù×ö£¬¾ÍÔÊÐí¿ª·¢ÕßÐ޸ķþÎñµÄÊý¾Ý½á¹¹£¬¶ø²»ÓÃÌáǰÓëÆäËû·þÎñµÄ¿ª·¢Õß»¥ÏàÐÉÌ¡£ÕâÑù×öÔÚÔËÐÐʱҲʵÏÖÁ˸üºÃµÄ¸ôÀë¡£ÀýÈ磬һ¸ö·þÎñµÄÊý¾Ý¿â¼ÓËø²»»áÓ°ÏìÁíÍâµÄ·þÎñ¡£µ«ÊÇÄãÉÔºó¾Í»á¿´µ½ÔÚ·þÎñ¼ä²»¹²ÏíÊý¾Ý¿âµÄ±×¶Ë£¬ÌرðÊÇ´¦ÀíÊý¾ÝÒ»ÖÂÐԺͿç·þÎñ²éѯ¶¼±äµÃ¸üΪ¸´ÔÓ¡£
¹²ÏíÀà¿âµÄ½ÇÉ«
¿ª·¢ÈËÔ±¾³£°ÑһЩͨÓõŦÄÜ´ò°üµ½¿â»òÄ£¿éÖУ¬ÒÔ±ã¶à¸öÓ¦ÓóÌÐò¿ÉÒÔÖØÓÃËü¶øÎÞÐë¸´ÖÆ´úÂë¡£±Ï¾¹£¬Èç¹ûûÓÐMaven»ònpm¿â£¬ÎÒÃǽñÌìµÄ¿ª·¢¹¤×÷¶¼»á±äµÃ¸üÀ§ÄÑ¡£Äã¿ÉÄÜÒ²ÏëÔÚ΢·þÎñ¼Ü¹¹ÖÐʹÓù²Ïí¿â¡£´Ó±íÃæÉÏ¿´£¬ËüËÆºõÊǼõÉÙ·þÎñÖдúÂëÖØ¸´µÄºÃ·½·¨¡£µ«ÊÇÄãÐèҪȷ±£²»»áÒâÍâµØÔÚ·þÎñÖ®¼äÒýÈëñîºÏ¡£
ÀýÈ磬ÏëÏóһ϶à¸ö·þÎñÐèÒª¸üÐÂOrderÒµÎñ¶ÔÏóµÄ³¡¾°¡£Ò»ÖÖÑ¡ÔñÊǽ«¸Ã¹¦ÄÜ´ò°üΪ¿É¹©¶à¸ö·þÎñʹÓõĿ⡣һ·½Ã棬ʹÓÿâ¿ÉÒÔÏû³ý´úÂëÖØ¸´¡£ÁíÒ»·½Ã棬Èç¹ûÒµÎñÐèÇóµÄ±ä¸üÓ°ÏìÁËOrderÒµÎñ¶ÔÏ󣬿ª·¢ÕßÐèÒªÍ¬Ê±ÖØ½¨ºÍÖØÐ²¿ÊðËùÓÐʹÓÃÁ˹²Ïí¿âµÄ·þÎñ¡£¸üºÃµÄÑ¡ÔñÊǰÑÕâЩ¿ÉÄÜ»á¸ü¸ÄµÄͨÓù¦ÄÜ£¨ÀýÈçOrder¹ÜÀí£©×÷Ϊ·þÎñÀ´ÊµÏÖ£¬¶ø²»Êǹ²Ïí¿â¡£
ÄãÓ¦¸ÃŬÁ¦Ê¹Óù²Ïí¿âÀ´ÊµÏÖ²»Ì«¿ÉÄܸıäµÄ¹¦ÄÜ¡£ÀýÈ磬ÔÚµäÐ͵ÄÓ¦ÓóÌÐòÖУ¬ÔÚÿ¸ö·þÎñÖж¼ÊµÏÖÒ»¸öͨÓõÄMoneyÀࣨÀýÈçÓÃÀ´ÊµÏÖ±ÒÖÖת»»µÈ¹Ì¶¨¹¦ÄÜ£©Ã»ÓÐÈκÎÒâÒå¡£Ïà·´£¬ÄãÓ¦¸Ã´´½¨Ò»¸ö¹©ËùÓзþÎñʹÓõĹ²Ïí¿â¡£
·þÎñµÄ´óС²¢²»ÖØÒª
΢·þÎñÕâ¸öÊõÓïµÄÒ»¸öÎÊÌâÊǻὫÄãµÄ¹Ø×¢µã´íÎóµØ¾Û½¹ÔÚ΢ÉÏ¡£Ëü°µÊ¾·þÎñÓ¦¸Ã·Ç³£Ð¡¡£ÆäËû»ùÓÚ´óСµÄÊõÓÈçminiservice»ònanoservice£©Ò²ÊÇÈç´Ë¡£Êµ¼ÊÉÏ£¬´óС²»ÊÇÒ»¸öÖØÒªµÄ¿¼ÂÇÒòËØ¡£
¸üºÃµÄÄ¿±êÊǽ«¾«ÐÄÉè¼ÆµÄ·þÎñ¶¨ÒåΪÄܹ»ÓÉСÍŶӿª·¢µÄ·þÎñ£¬²¢ÇÒ½»¸¶Ê±¼ä×î¶Ì£¬ÓëÆäËûÍŶÓÐ×÷×îÉÙ¡£ÀíÂÛÉÏ£¬ÍŶӿÉÄÜÖ»¸ºÔðµ¥Ò»·þÎñ£¬Òò´Ë·þÎñ¾ø²»ÊÇ΢СµÄ¡£Ïà·´£¬Èç¹û·þÎñÐèÒª´óÐÍÍŶӻòÐèÒªºÜ³¤Ê±¼ä½øÐвâÊÔ£¬ÄÇô²ð·ÖÍŶӻò·þÎñ¿ÉÄÜÊÇÓÐÒâÒåµÄ¡£ÁíÍ⣬Èç¹ûÄãÒòΪÆäËû·þÎñµÄ±ä¸ü¶ø²»¶ÏÐèҪͬ²½¸üÐÂ×Ô¼º¸ºÔðµÄ·þÎñ£¬»òÕßÄãËù¸ºÔðµÄ·þÎñÕýÔÚ´¥·¢ÆäËû·þÎñµÄͬ²½¸üУ¬ÄÇôÕâ±íÃ÷·þÎñûÓÐʵÏÖËÉñîºÏ¡£Äã¹¹½¨µÄÉõÖÁ¿ÉÄÜÊÇÒ»¸ö·Ö²¼Ê½µÄµ¥Ìå¡£
΢·þÎñ¼Ü¹¹°ÑÓ¦ÓóÌÐòͨ¹ýһЩСµÄ¡¢ËÉñîºÏµÄ·þÎñ×éÖ¯ÔÚÒ»Æð¡£½á¹û£¬ÕâÑùµÄ¼Ü¹¹ÌáÉýÁË¿ª·¢½×¶ÎµÄЧÂÊ£¬ÌرðÊÇ¿Éά»¤ÐÔ¡¢¿É²âÊÔÐԺͿɲ¿ÊðÐÔ£¬ÕâÒ²¾ÍÈÃ×éÖ¯µÄÈí¼þ¿ª·¢Ëٶȸü¿ì¡£Î¢·þÎñ¼Ü¹¹Ò²Í¬Ê±ÌáÉýÁËÓ¦ÓóÌÐòµÄ¿ÉÀ©Õ¹ÐÔ£¬¾¡¹ÜÕâ²»ÊÇ΢·þÎñµÄÖ÷ҪĿ±ê¡£ÎªÁËʹÓÃ΢·þÎñ¼Ü¹¹¿ª·¢Èí¼þ£¬ÄãÊ×ÏÈÐèҪʶ±ð·þÎñ£¬²¢È·¶¨ËüÃÇÖ®¼äÈçºÎÐ×÷¡£ÏÖÔÚÎÒÃÇÀ´¿´¿´ÈçºÎ¶¨ÒåÒ»¸öÓ¦ÓóÌÐòµÄ΢·þÎñ¼Ü¹¹¡£
2.2¡¡ÎªÓ¦ÓóÌÐò¶¨Òå΢·þÎñ¼Ü¹¹
ÄÇôÈçºÎ¶¨ÒåÒ»¸ö΢·þÎñ¼Ü¹¹ÄØ£¿¸úËùÓеÄÈí¼þ¿ª·¢¹ý³ÌÒ»Ñù£¬Ò»¿ªÊ¼ÎÒÃÇÐèÒªÄõ½ÁìÓòר¼Ò»òÕßÏÖÓÐÓ¦ÓõÄÐèÇóÎĵµ¡£¸úËùÓеÄÈí¼þ¿ª·¢Ò»Ñù£¬¶¨Òå¼Ü¹¹Ò²ÊÇÒ»ÏîÒÕÊõ¶ø·Ç¼¼Êõ¡£±¾½ÚÎÒÃǽ«½éÉÜÒ»ÖÖ¶¨ÒåÓ¦ÓóÌÐò¼Ü¹¹µÄÈý²½Ê½Á÷³Ì£¬Èçͼ2-5Ëùʾ¡£ÊÀ½çÉϲ¢Ã»ÓÐÒ»¸ö»úе»¯µÄÁ÷³Ì¿ÉÒÔ×ñÑ£¬È»ºóÖ¸ÍûÕâ¸öÁ÷³ÌÊä³öÒ»¸öºÏÀíµÄ¼Ü¹¹¡£ÎÒÃÇÖ»ÄܽéÉÜÒ»¸ö´ó¸ÅµÄ·½·¨£¬ÏÖʵÊÀ½çÖУ¬ÕâÊÇÒ»¸ö²»¶Ïµü´úºÍ³ÖÐø´´ÐµĹý³Ì¡£
Ó¦ÓóÌÐòÊÇÓÃÀ´´¦Àí¿Í»§¶ËÇëÇóµÄ£¬Òò´Ë¶¨ÒåÆä¼Ü¹¹µÄµÚÒ»²½Êǽ«Ó¦ÓóÌÐòµÄÐèÇóÌáÁ¶Îª¸÷ÖֹؼüÇëÇó¡£µ«ÊÇ£¬²»ÊǸù¾ÝÌØ¶¨µÄ½ø³Ì¼äͨÐż¼Êõ£¨ÈçREST»òÏûÏ¢£©À´ÃèÊöÕâЩÇëÇ󣬶øÊÇʹÓøü³éÏóµÄϵͳ²Ù×÷Õâ¸ö¸ÅÄϵͳ²Ù×÷£¨system
operation£©ÊÇÓ¦ÓóÌÐò±ØÐë´¦ÀíµÄÇëÇóµÄÒ»ÖÖ³éÏóÃèÊö¡£Ëü¼È¿ÉÒÔÊǸüÐÂÊý¾ÝµÄÃüÁҲ¿ÉÒÔÊǼìË÷Êý¾ÝµÄ²éѯ¡£Ã¿¸öÃüÁîµÄÐÐΪ¶¼ÊǸù¾Ý³éÏóÁìÓòÄ£ÐͶ¨ÒåµÄ£¬³éÏóÁìÓòÄ£ÐÍÒ²ÊÇ´ÓÐèÇóÖÐÅÉÉú³öÀ´µÄ¡£ÏµÍ³²Ù×÷ÊÇÃèÊö·þÎñÖ®¼äÐ×÷·½Ê½µÄ¼Ü¹¹³¡¾°¡£
¸ÃÁ÷³ÌµÄµÚ¶þ²½ÊÇÈ·¶¨ÈçºÎ·Ö½â·þÎñ¡£Óм¸ÖÖ²ßÂԿɹ©Ñ¡Ôñ¡£Ò»ÖÖÔ´ÓÚÒµÎñ¼Ü¹¹Ñ§ÅɵIJßÂÔÊǶ¨ÒåÓëÒµÎñÄÜÁ¦Ïà¶ÔÓ¦µÄ·þÎñ¡£ÁíÒ»ÖÖ²ßÂÔÊÇÎ§ÈÆÁìÓòÇý¶¯Éè¼ÆµÄ×ÓÓòÀ´·Ö½âºÍÉè¼Æ·þÎñ¡£µ«ÕâЩ²ßÂÔµÄ×îÖÕ½á¹û¶¼ÊÇÎ§ÈÆÒµÎñ¸ÅÄî¶ø·Ç¼¼Êõ¸ÅÄî·Ö½âºÍÉè¼ÆµÄ·þÎñ¡£
¶¨ÒåÓ¦ÓóÌÐò¼Ü¹¹µÄµÚÈý²½ÊÇÈ·¶¨Ã¿¸ö·þÎñµÄAPI¡£Îª´Ë£¬Ä㽫µÚÒ»²½ÖбêʶµÄÿ¸öϵͳ²Ù×÷·ÖÅ䏸·þÎñ¡£·þÎñ¿ÉÒÔÍêÈ«¶ÀÁ¢µØÊµÏÖ²Ù×÷¡£»òÕߣ¬Ëü¿ÉÄÜÐèÒªÓëÆäËû·þÎñÐ×÷¡£ÔÚÕâÖÖÇé¿öÏ£¬Äã¿ÉÒÔÈ·¶¨·þÎñµÄÐ×÷·½Ê½£¬Õâͨ³£ÐèÒª·þÎñÀ´Ö§³ÖÆäËû²Ù×÷¡£Ä㻹ÐèҪȷ¶¨Ñ¡ÓõÚ3ÕÂÖÐÃèÊöµÄÄÄÖÖ½ø³Ì¼äͨÐÅ»úÖÆÀ´ÊµÏÖÿ¸ö·þÎñµÄAPI¡£
·þÎñµÄ·Ö½âÓм¸¸öÕϰÐèÒª¿Ë·þ¡£Ê×ÏÈÊÇÍøÂçÑÓ³Ù¡£Äã¿ÉÄܻᷢÏÖ£¬ÓÉÓÚ·þÎñÖ®¼äµÄÍøÂçÍù·µÌ«¶à£¬Ìض¨µÄ·Ö½â½«ÊDz»ÇÐʵ¼ÊµÄ¡£·Ö½âµÄÁíÒ»¸öÕϰÊÇ·þÎñÖ®¼äµÄͬ²½Í¨Ð޵µÍÁË¿ÉÓÃÐÔ¡£Äã¿ÉÄÜÐèҪʹÓõÚ3ÕÂÖÐÃèÊöµÄ×Ô°üº¬·þÎñµÄ¸ÅÄî¡£µÚÈý¸öÕϰÊÇÐèҪά»¤¿ç·þÎñµÄÊý¾ÝÒ»ÖÂÐÔ¡£ÄãÐèҪʹÓõÚ4ÕÂÖÐÌÖÂÛµÄSaga¡£·Ö½âµÄµÚËĸöÒ²ÊÇ×îºóÒ»¸öÕϰÊÇËùνµÄÉϵÛÀࣨGod
Class£©£¬Ëü¹ã·ºÓ¦ÓÃÔÚÕû¸öÓ¦ÓóÌÐòÖС£ÐÒÔ˵ÄÊÇ£¬Äã¿ÉÒÔʹÓÃÁìÓòÇý¶¯Éè¼ÆÖеĸÅÄîÀ´Ïû³ýÉϵÛÀà¡£
±¾½ÚÊ×ÏȽéÉÜÈçºÎʶ±ðÓ¦ÓóÌÐòµÄϵͳ²Ù×÷¡£Ö®ºó£¬»áÑо¿½«Ó¦ÓóÌÐò·Ö½âΪ·þÎñµÄ²ßÂÔºÍÖ¸ÄÏ¡¢·Ö½âµÄÕϰÒÔ¼°ÈçºÎ½â¾öËüÃÇ¡£×îºó£¬½«ÃèÊöÈçºÎ¶¨Òåÿ¸ö·þÎñµÄAPI¡£
2.2.1¡¡Ê¶±ðϵͳ²Ù×÷
¶¨ÒåÓ¦ÓóÌÐò¼Ü¹¹µÄµÚÒ»²½ÊǶ¨Òåϵͳ²Ù×÷¡£ÆðµãÊÇÓ¦ÓóÌÐòµÄÐèÇ󣬰üÀ¨Óû§¹Êʼ°ÆäÏà¹ØµÄÓû§³¡¾°£¨Çë×¢Ò⣬ÕâЩÓë¼Ü¹¹³¡¾°²»Í¬£©¡£Ê¹ÓÃͼ2-6ÖÐËùʾµÄÁ½²½Ê½Á÷³Ìʶ±ðºÍ¶¨Òåϵͳ²Ù×÷¡£Õâ¸öÁ÷³ÌµÄÁé¸ÐÀ´×ÔCraig
LarmanµÄÃûÖø¡¶Applying UML and Patterns¡·£¨Prentice Hall£¬2004£©ÖнéÉܵÄÃæÏò¶ÔÏóÉè¼Æ¹ý³Ì£¨www.craiglarman.com/wiki/index.php?title=Book_Applying_UML_and_Patterns£©
¡£µÚÒ»²½´´½¨ÓɹؼüÀà×é³ÉµÄ³éÏóÁìÓòÄ£ÐÍ£¬ÕâЩ¹Ø¼üÀàÌṩÓÃÓÚÃèÊöϵͳ²Ù×÷µÄ´Ê»ã±í¡£µÚ¶þ²½È·¶¨ÏµÍ³²Ù×÷£¬²¢¸ù¾ÝÁìÓòÄ£ÐÍÃèÊöÿ¸öϵͳ²Ù×÷µÄÐÐΪ¡£
µÚÒ»²½ÊÇ´´½¨Ò»¸ö³éÏóÁìÓòÄ£ÐÍ¡£µÚ¶þ²½ÊǶ¨Òåϵͳ²Ù×÷£¬ÕâЩ²Ù×÷ÊǸù¾ÝÁìÓòÄ£ÐͶ¨ÒåµÄ
ÁìÓòÄ£ÐÍÖ÷ÒªÔ´×ÔÓû§¹ÊÊÂÖÐÌá¼°µÄÃû´Ê£¬ÏµÍ³²Ù×÷Ö÷ÒªÀ´×ÔÓû§¹ÊÊÂÖÐÌá¼°µÄ¶¯´Ê¡£Ä㻹¿ÉÒÔʹÓÃÃûΪʼþ·ç±©£¨Event
Storming£©µÄ¼¼Êõ¶¨ÒåÁìÓòÄ£ÐÍ£¬ÎÒ½«ÔÚµÚ5ÕÂÖÐÌÖÂÛ¡£Ã¿¸öϵͳ²Ù×÷µÄÐÐΪ¶¼ÊǸù¾ÝËü¶ÔÒ»¸ö»ò¶à¸öÁìÓò¶ÔÏóµÄÓ°ÏìÒÔ¼°ËüÃÇÖ®¼äµÄ¹ØÏµÀ´ÃèÊöµÄ¡£ÏµÍ³²Ù×÷¿ÉÒÔ´´½¨¡¢¸üлòɾ³ýÁìÓò¶ÔÏó£¬ÒÔ¼°´´½¨»òÆÆ»µËüÃÇÖ®¼äµÄ¹ØÏµ¡£
ÎÒÃÇÀ´¿´¿´ÈçºÎ¶¨Òå³éÏóÁìÓòÄ£ÐÍ¡£Ö®ºó£¬ÎÒ½«¸ù¾ÝÁìÓòÄ£ÐͶ¨Òåϵͳ²Ù×÷¡£
´´½¨³éÏóÁìÓòÄ£ÐÍ
¶¨Òåϵͳ²Ù×÷µÄµÚÒ»²½ÊÇΪÕâ¸öÓ¦ÓóÌÐòÃè»æÒ»¸ö³éÏóµÄÁìÓòÄ£ÐÍ¡£×¢ÒâÕâ¸öÄ£ÐͱÈÎÒÃÇ×îÖÕҪʵÏֵļòµ¥ºÜ¶à¡£Ó¦ÓóÌÐò±¾Éí²¢²»ÐèÒªÒ»¸öÁìÓòÄ£ÐÍ£¬ÒòΪÎÒÃÇÔÚÉÔºó»áѧµ½£¬Ã¿Ò»¸ö·þÎñ¶¼ÓÐËü×Ô¼ºµÄÁìÓòÄ£ÐÍ¡£¾¡¹Ü·Ç³£¼òµ¥£¬³éÏóµÄÁìÓòÄ£ÐÍÈÔ¾ÉÓÐÖúÓÚÔÚ¿ªÊ¼½×¶ÎÌṩ°ïÖú£¬ÒòΪËü¶¨ÒåÁËÃèÊöϵͳ²Ù×÷ÐÐΪµÄһЩ´ÊÓï¡£
´´½¨ÁìÓòÄ£ÐÍ»á²ÉÓÃһЩ±ê×¼µÄ¼¼Êõ£¬ÀýÈçͨ¹ýÓëÁìÓòר¼Ò¹µÍ¨ºó£¬·ÖÎöÓû§¹Êʺͳ¡¾°ÖÐÆµ·±³öÏÖµÄÃû´Ê¡£ÀýÈçPlace
OrderÓû§¹ÊÊ£¬ÎÒÃÇ¿ÉÒÔ°ÑËü·Ö½âΪ¶à¸öÓû§³¡¾°£¬ÀýÈçÕâ¸ö£º

ÔÚÕâ¸öÓû§³¡¾°ÖеÄÃû´Ê£¬ÈçConsumer¡¢Order¡¢RestaurantºÍCreditCard£¬°µÊ¾ÁËÕâЩÀà¶¼ÊÇÐèÒªµÄ¡£
ͬÑù£¬Accept OrderÓû§¹ÊÊÂÒ²¿ÉÒÔ·Ö½âΪ¶à¸ö³¡¾°£¬ÈçÏ£º

Õâ¸ö³¡¾°°µÊ¾ÐèÒªCourierÀàºÍDeliveryÀà¡£ÔÚ¾¹ý¼¸´Îµü´ú·ÖÎöÖ®ºó£¬½á¹ûÏÔÈ»¾ÍÊÇÕâ¸öÁìÓòÄ£ÐÍÓ¦¸Ã°üÀ¨Ò»Ð©À࣬ÈçMenuItemºÍAddressµÈ¡£Í¼2-7ÏÔʾÁ˺ËÐÄÀàµÄÀàͼ¡£

ÿһ¸öÀàµÄ×÷ÓÃÈçÏ£º
Consumer£ºÏ¶©µ¥µÄÓû§¡£
Order£ºÓû§ÏµĶ©µ¥£¬ËüÓÃÀ´ÃèÊö¶©µ¥²¢¸ú×Ù״̬¡£
OrderLineItem£ºOrderÖеÄÒ»¸öÌõÄ¿¡£
DeliveryInfo£ºËͲ͵Äʱ¼äºÍµØÖ·¡£
Restaurant£ºÎªÓû§×¼±¸Éú²ú¶©µ¥µÄ²Í¹Ý£¬Í¬Ê±Ò²Òª·¢ÆðËÍ»õ¡£
MenuItem£º²Í¹Ý²Ëµ¥ÉϵÄÒ»¸öÌõÄ¿¡£
Courier£ºËͲÍÔ±¸ºÔð°Ñ¶©µ¥Ë͵½Óû§ÊÖÀï¡£¿É¸ú×ÙËͲÍÔ±µÄ¿ÉÓÃÐÔºÍËûÃǵÄλÖá£
Address£ºConsumer»òRestaurantµÄµØÖ·¡£
Location£ºCourierµ±Ç°µÄλÖã¬Óþγ¶È±íʾ¡£
ÀàËÆÍ¼2-7ÕâÖÖÀàͼÃèÊöÁËÓ¦ÓóÌÐò¼Ü¹¹µÄÒ»¸ö·½Ãæ¡£µ«Èç¹ûûÓжÔÓ¦µÄ³¡¾°£¬Õâ¸öͼҲ¾ÍÊǽö½öºÃ¿´¶øÒÑ£¬²¢²»ÊµÓá£ÏÂÒ»²½¿ªÊ¼¶¨Òå¶ÔÓ¦¼Ü¹¹³¡¾°µÄϵͳ²Ù×÷¡£
¶¨Òåϵͳ²Ù×÷
µ±¶¨ÒåÁ˳éÏóµÄÁìÓòÄ£ÐÍÖ®ºó£¬½ÓÏÂÀ´¾ÍҪʶ±ðϵͳ±ØÐë´¦ÀíµÄ¸÷ÖÖÇëÇó¡£ÎÒÃDz¢²»ÌÖÂÛ¾ßÌåµÄÓû§½çÃæ£¬µ«ÊÇÄãÄܹ»ÏëÏóÔÚÿһ¸öÓû§³¡¾°Ï£¬Ç°¶ËµÄÓû§½çÃæÏòºó¶ËµÄÒµÎñÂß¼·¢³öÇëÇ󣬺ó¶ËµÄÒµÎñÂß¼½øÐÐÊý¾ÝµÄ»ñÈ¡ºÍ´¦Àí¡£FTGOÊÇÒ»¸öWebÓ¦Óã¬ÕâÒâζ×ÅËüµÄ´ó²¿·ÖÇëÇó¶¼ÊÇ»ùÓÚHTTPµÄ¡£µ«Ò²ÓпÉÄÜһЩ¿Í»§¶Ë»áʹÓÃÏûÏ¢¡£Ïà±È°ó¶¨µ½¾ßÌåµÄͨÐÅÐÒ飬ʹÓóéÏóµÄ´Ê»ãÀ´ÃèÊö¸úϵͳ²Ù×÷ÓйصÄÇëÇó¸üΪºÏÀí¡£
ÓÐÒÔÏÂÁ½ÖÖÀàÐ͵Äϵͳ²Ù×÷¡£
ÃüÁîÐÍ£º´´½¨¡¢¸üлòɾ³ýÊý¾ÝµÄϵͳ²Ù×÷¡£
²éѯÐÍ£º²éѯºÍ¶ÁÈ¡Êý¾ÝµÄϵͳ²Ù×÷¡£
´Ó¸ù±¾ÉÏ˵£¬ÕâЩϵͳ²Ù×÷¶¼»á¶ÔÓ¦µ½¾ßÌåµÄREST¡¢RPC»òÏûÏ¢¶Ë¿Ú¡£µ«ÏÖ½×¶ÎÎÒÃDz»±ØÔÚÒâÕâЩʵÏÖϸ½Ú¡£ÈÃÎÒÃÇÏÈ¿ªÊ¼Ê¶±ðһЩָÁî¡£
ʶ±ðϵͳָÁîµÄÇÐÈëµãÊÇ·ÖÎöÓû§¹Êʺͳ¡¾°Öе͝´Ê¡£ÀýÈçPlace OrderÓû§¹ÊÊ£¬Ëü·Ç³£Ã÷È·µØ¸æË߼ܹ¹Ê¦£¬Õâ¸öϵͳ±ØÐëÌṩһ¸öCreate
Order²Ù×÷¡£ºÜ¶àÓû§¹Êʶ¼»áÖ±½Ó¶ÔÓ¦»òÓ³ÉäΪϵͳÃüÁî¡£±í2-1ÁгöÁËһЩ¹Ø¼üµÄϵͳÃüÁî¡£
ÃüÁî¹æ·¶¶¨ÒåÁËÃüÁî¶ÔÓ¦µÄ²ÎÊý¡¢·µ»ØÖµºÍÁìÓòÄ£ÐÍÀàµÄÐÐΪ¡£ÐÐΪ¹æ·¶ÖаüÀ¨Ç°ÖÃÌõ¼þ£¨¼´µ±Õâ¸ö²Ù×÷±»µ÷ÓÃʱ±ØÐëÂú×ãµÄÌõ¼þ£©ºÍºóÖÃÌõ¼þ£¨¼´Õâ¸ö²Ù×÷±»µ÷Óúó±ØÐëÂú×ãµÄÌõ¼þ£©¡£ÀýÈ磬ÒÔϾÍÊÇcreateOrder()ϵͳ²Ù×÷µÄ¹æ·¶¡£

ǰÖÃÌõ¼þ¶ÔÓ¦×ÅPlace OrderÓû§³¡¾°ÖеÄgivens£¬ºóÖÃÌõ¼þ¶ÔÓ¦×ų¡¾°ÖеÄThen¡£µ±ÏµÍ³²Ù×÷±»µ÷ÓÃʱ£¬Ëü»á¼ì²éǰÖÃÌõ¼þ£¬Ö´ÐвÙ×÷À´Íê³ÉºÍÂú×ãºóÖÃÌõ¼þ¡£
ÏÂÃæÊÇacceptOrder()µÄϵͳ²Ù×÷¹æ·¶£º 
ǰÖÃÌõ¼þºÍºóÖÃÌõ¼þ¶ÔÓ¦×Å֮ǰÓû§³¡¾°ÖеÄÃèÊö¡£
¶àÊýÓëϵͳ²Ù×÷Ïà¹ØµÄ¼Ü¹¹ÔªËØÊÇÃüÁî¡£²éѯËäÈ»½ö½öÊǼòµ¥µØ»ñÈ¡Êý¾Ý£¬µ«ÊÇҲͬÑùÖØÒª¡£
Ó¦ÓóÌÐò³ýÁËʵÏÖÖ¸ÁîÒÔÍ⣬Ҳ±ØÐëʵÏÖ²éѯ¡£²éѯΪÓû§¾ö²ßÌṩÁËÓû§½çÃæ¡£ÔÚĿǰ½×¶Î£¬ÎÒÃDz¢Ã»ÓпªÊ¼ÎªFTGOÓ¦ÓóÌÐò¹¹Ë¼ÈκÎÓû§½çÃæ£¬µ«ÊÇÐèҪעÒ⣬µ±Ïû·ÑÕß϶©µ¥Ê±ÍùÍùÊÇÈçÏÂËùʾµÄ¹ý³Ì¡£
1.Óû§ÊäÈëËͲ͵ØÖ·ºÍÆÚÍûµÄËͲÍʱ¼ä£»
2.ϵͳÏÔʾµ±Ç°¿ÉÓõIJ͹ݣ»
3.Óû§Ñ¡Ôñ²Í¹Ý£»
4.ϵͳÏÔʾ²Í¹ÝµÄ²Ëµ¥£»
5.Óû§µã²Í²¢½áÕË£»
6.ϵͳ´´½¨¶©µ¥¡£
Õâ¸öÓû§³¡¾°°üº¬ÁËÒÔϵIJéѯÐͲÙ×÷£º
findAvailableRestaurants(deliveryAddress,deliveryTime)£º»ñÈ¡ËùÓÐÄܹ»ËͲ͵½Óû§µØÖ·²¢Âú×ãËͲÍʱ¼äÒªÇóµÄ²Í¹Ý¡£
findRestaurantMenu(id)£º·µ»Ø²Í¹ÝÐÅÏ¢ºÍÕâ¼Ò²Í¹ÝµÄ²Ëµ¥Ïî¡£
ÔÚÕâÁ½Ïî²éѯÖУ¬findAvailableRestaurants()Ò²ÐíÊÇÔڼܹ¹²ãÃæÓÈÆäÖØÒªµÄÒ»¸ö¡£ËüÊÇÒ»¸ö°üº¬Á˵ØÀíλÖõÈÐÅÏ¢µÄ¸´ÔÓ²éѯ¡£µØÀí²éѯµÄ×é¼þ¸ºÔðÕÒµ½ËͲ͵ØÖ·ÖÜΧËùÓÐÂú×ãÒªÇóµÄ²Í¹ÝλÖá£Í¬Ê±ËüÒ²ÐèÒª¹ýÂËÄÇЩÔÚ¶©µ¥×¼±¸ºÍËͲÍʱ¼ä·¶Î§ÄÚûÓÐÓªÒµµÄ²Í¹Ý¡£ÁíÍ⣬Õâ¸ö²éѯµÄÐÔÄÜÓÈÆäÖØÒª£¬ÒòΪִÐÐÕâ¸ö²éѯʱ£¬¿Í»§¶àÊý¶¼ÊÇ¡°ÔÚÏß¼±µÈ¡±µÄ״̬£¬µ¢Î󲻵á£
³éÏóµÄÁìÓòÄ£ÐͺÍϵͳ²Ù×÷Äܹ»»Ø´ðÕâ¸öÓ¦Óá°×öʲô¡±ÕâÒ»ÎÊÌâ¡£ÕâÓÐÖúÓÚÍÆ¶¯Ó¦ÓóÌÐòµÄ¼Ü¹¹Éè¼Æ¡£Ã¿Ò»¸öϵͳ²Ù×÷µÄÐÐΪ¶¼Í¨¹ýÁìÓòÄ£Ð͵ķ½Ê½À´ÃèÊö¡£Ã¿Ò»¸öÖØÒªµÄϵͳ²Ù×÷¶¼¶ÔӦ׿ܹ¹²ãÃæµÄÒ»¸öÖØ´ó³¡¾°£¬ÊǼܹ¹ÖÐÐèÒªÏêϸÃèÊöºÍÌØ±ð¿¼Âǵĵط½¡£ÏÖÔÚÎÒÃÇÀ´¿´¿´ÈçºÎ¶¨ÒåÓ¦ÓóÌÐòµÄ΢·þÎñ¼Ü¹¹¡£
ϵͳ²Ù×÷±»¶¨Òåºó£¬ÏÂÒ»²½¾ÍÊÇÍê³ÉÓ¦Ó÷þÎñµÄʶ±ð¡£Èç֮ǰÌáµ½µÄ£¬Õâ²¢²»ÊÇÒ»¸ö»úе»¯µÄÁ÷³Ì£¬Ïà·´£¬ÓжàÖÖ²ð·Ö²ßÂԿɹ©Ñ¡Ôñ¡£Ã¿Ò»ÖÖ¶¼ÊÇ´ÓÒ»¸ö²àÃæÀ´½â¾öÎÊÌ⣬²¢ÇÒʹÓÃËüÃǶÀÓеÄһЩÊõÓï¡£µ«ÊÇÊâ;ͬ¹é£¬ÕâЩ²ßÂԵĽá¹û¶¼ÊÇÒ»ÑùµÄ£ºÒ»¸ö°üº¬Èô¸É·þÎñµÄ¼Ü¹¹£¬ÕâÑùµÄ¼Ü¹¹ÊÇÒÔÒµÎñ¶ø²»ÊǼ¼Êõ¸ÅÄîΪÖÐÐÄ¡£
ÎÒÃÇÏÈÀ´¿´¿´µÚÒ»¸ö²ßÂÔ£ºÊ¹ÓÃÒµÎñÄÜÁ¦À´¶¨Òå·þÎñ¡£
2.2.2¡¡¸ù¾ÝÒµÎñÄÜÁ¦½øÐзþÎñ²ð·Ö
´´½¨Î¢·þÎñ¼Ü¹¹µÄ²ßÂÔÖ®Ò»¾ÍÊDzÉÓÃÒµÎñÄÜÁ¦½øÐзþÎñ²ð·Ö¡£ÒµÎñÄÜÁ¦ÊÇÒ»¸öÀ´×ÔÓÚÒµÎñ¼Ü¹¹½¨Ä£µÄÊõÓï¡£ÒµÎñÄÜÁ¦ÊÇָһЩÄܹ»Îª¹«Ë¾£¨»ò×éÖ¯£©²úÉú¼ÛÖµµÄÉÌÒµ»î¶¯¡£Ìض¨ÒµÎñµÄÒµÎñÄÜÁ¦È¡¾öÓÚÕâ¸öÒµÎñµÄÀàÐÍ¡£ÀýÈ磬±£ÏÕ¹«Ë¾ÒµÎñÄÜÁ¦Í¨³£°üÀ¨³Ð±£¡¢ÀíÅâ¹ÜÀí¡¢ÕËÎñºÍºÏ¹æµÈ¡£ÔÚÏßÉ̵êµÄÒµÎñÄÜÁ¦°üÀ¨£º¶©µ¥¹ÜÀí¡¢¿â´æ¹ÜÀíºÍ·¢»õ£¬µÈµÈ¡£
ÒµÎñÄÜÁ¦¶¨ÒåÁËÒ»¸ö×éÖ¯µÄ¹¤×÷
×éÖ¯µÄÒµÎñÄÜÁ¦Í¨³£ÊÇÖ¸Õâ¸ö×éÖ¯µÄÒµÎñÊÇ×öʲô£¬ËüÃÇͨ³£¶¼ÊÇÎȶ¨µÄ¡£ÓëÖ®Ïà·´£¬×éÖ¯²ÉÓúÎÖÖ·½Ê½À´ÊµÏÖËüµÄÒµÎñÄÜÁ¦£¬ÊÇËæ×Åʱ¼ä²»¶Ï±ä»¯µÄ¡£Õâ¸ö×¼ÔòÔÚ½ñÌìÓÈÆäÃ÷ÏÔ£¬ºÜ¶àм¼ÊõÔÚ±»¿ìËÙ²ÉÓã¬ÉÌÒµÁ÷³ÌµÄ×Ô¶¯»¯³Ì¶ÈÔ½À´Ô½¸ß¡£ÀýÈ磬²»¾Ã֮ǰÄ㻹ͨ¹ý°Ñ֧Ʊ½»¸øÒøÐйñÔ±µÄ·½Ê½À´¶ÒÏÖ֧Ʊ£¬ÏÖÔںܶàATM»ú¶¼Ö§³ÖÖ±½Ó¶ÒÏÖ֧Ʊ£¬¶ø½ñ£¬ÈËÃÇÉõÖÁ¿ÉÒÔʹÓÃÖÇÄÜÊÖ»úÅÄÕյķ½Ê½À´¶ÒÏÖ֧Ʊ¡£ÕýÈçÄãËù¼û£¬¡°¶ÒÏÖ֧Ʊ¡±Õâ¸öÒµÎñÄÜÁ¦ÊÇÎȶ¨²»±äµÄ£¬µ«ÊÇÕâ¸öÄÜÁ¦µÄʵÏÖ·½Ê½ÕýÔÚ·¢ÉúÏ·¾çÐԵı仯¡£
ʶ±ðÒµÎñÄÜÁ¦
Ò»¸ö×éÖ¯ÓÐÄÄЩҵÎñÄÜÁ¦£¬ÊÇͨ¹ý¶Ô×éÖ¯µÄÄ¿±ê¡¢½á¹¹ºÍÉÌÒµÁ÷³ÌµÄ·ÖÎöµÃÀ´µÄ¡£Ã¿Ò»¸öÒµÎñÄÜÁ¦¶¼¿ÉÒÔ±»ÈÏΪÊÇÒ»¸ö·þÎñ£¬³ý·ÇËüÊÇÃæÏòÒµÎñµÄ¶ø·ÇÃæÏò¼¼ÊõµÄ¡£ÒµÎñÄÜÁ¦¹æ·¶°üº¬¶àÏîÔªËØ£¬±ÈÈçÊäÈëºÍÊä³ö¡¢·þÎñµÈ¼¶ÐÒ飨SLA£©¡£ÀýÈ磬±£Ïճб£ÄÜÁ¦µÄÊäÈëÀ´×Ô¿Í»§µÄÓ¦ÓóÌÐò£¬Õâ¸öÒµÎñÄÜÁ¦µÄÊä³öÊÇÍê³ÉºË±£²¢±¨¼Û¡£
ÒµÎñÄÜÁ¦Í¨³£¼¯ÖÐÔÚÌØ¶¨µÄÒµÎñ¶ÔÏóÉÏ¡£ÀýÈ磬ÀíÅâÒµÎñ¶ÔÏóÊÇÀíÅâ¹ÜÀí¹¦ÄܵÄÖØµã¡£ÄÜÁ¦Í¨³£¿ÉÒÔ·Ö½âΪ×ÓÄÜÁ¦¡£ÀýÈ磬ÀíÅâ¹ÜÀíÄÜÁ¦¾ßÓжà¸ö×ÓÄÜÁ¦£¬°üÀ¨ÀíÅâÐÅÏ¢¹ÜÀí¡¢ÀíÅâÉóºËºÍÀíÅ⸶¿î¹ÜÀí¡£
°ÑFTGOµÄÒµÎñÄÜÁ¦ÖðÒ»ÁгöÀ´ËƺõÒ²²¢²»Ì«À§ÄÑ£¬ÈçÏÂËùʾ¡£
¹©Ó¦É̹ÜÀí¡£
Courier management£ºËͲÍÔ±Ïà¹ØÐÅÏ¢¹ÜÀí£»
Restaurant information management£º²Í¹Ý²Ëµ¥ºÍÆäËûÐÅÏ¢¹ÜÀí£¬ÀýÈçÓªÒµµØÖ·ºÍʱ¼ä¡£
Ïû·ÑÕß¹ÜÀí£ºÏû·ÑÕßÓйØÐÅÏ¢µÄ¹ÜÀí¡£
¶©µ¥»ñÈ¡ºÍÂÄÐС£
Order management£ºÈÃÏû·ÑÕß¿ÉÒÔ´´½¨ºÍ¹ÜÀí¶©µ¥¡£
Restaurant order management£ºÈò͹ݿÉÒÔ¹ÜÀí¶©µ¥µÄÉú²ú¹ý³Ì¡£
ËͲ͡£
Courier availability management£º¹ÜÀíËͲÍÔ±µÄʵʱ״̬¡£
Delivery management£º°Ñ¶©µ¥Ë͵½Óû§ÊÖÖС£
»á¼Æ¼ÇÕË¡£
Consumer accounting£º¹ÜÀí¸úÏû·ÑÕßÏà¹ØµÄ»á¼Æ¼ÇÕË¡£
Restaurant accounting£º¹ÜÀí¸ú²Í¹ÝÏà¹ØµÄ»á¼Æ¼ÇÕË¡£
Courier accounting£º¹ÜÀí¸úËͲÍÔ±Ïà¹ØµÄ»á¼Æ¼ÇÕË¡£
ÆäËû¡£
¶¥¼¶ÄÜÁ¦°üÀ¨¹©Ó¦É̹ÜÀí¡¢Ïû·ÑÕß¹ÜÀí¡¢¶©µ¥»ñÈ¡ºÍÂÄÐÐÒÔ¼°»á¼Æ¼ÇÕË¡£¿ÉÄÜ»¹ÓÐÐí¶àÆäËû¶¥¼¶ÄÜÁ¦£¬°üÀ¨ÓëÓªÏúÏà¹ØµÄÄÜÁ¦¡£´ó¶àÊý¶¥¼¶ÄÜÁ¦¶¼»á·Ö½âΪ×ÓÄÜÁ¦¡£ÀýÈ磬¶©µ¥»ñÈ¡ºÍÂÄÐб»·Ö½âΪÎå¸ö×ÓÄÜÁ¦¡£
Õâ¸öÄÜÁ¦²ã´ÎµÄÓÐȤ·½ÃæÊÇÓÐÈý¸ö²Í¹ÝÏà¹ØµÄÄÜÁ¦£º²Í¹ÝÐÅÏ¢¹ÜÀí¡¢²Í¹Ý¶©µ¥¹ÜÀíºÍ²Í¹Ý»á¼Æ¼ÇÕË¡£ÄÇÊÇÒòΪËüÃÇ´ú±íÁ˲͹ÝÔËÓªµÄÈý¸ö½ØÈ»²»Í¬µÄ·½Ãæ¡£
½ÓÏÂÀ´£¬ÎÒÃǽ«Á˽âÈçºÎʹÓÃÒµÎñÄÜÁ¦À´¶¨Òå·þÎñ¡£
´ÓÒµÎñÄÜÁ¦µ½·þÎñ
Ò»µ©È·¶¨ÁËÒµÎñÄÜÁ¦£¬¾Í¿ÉÒÔΪÿ¸öÄÜÁ¦»òÏà¹ØÄÜÁ¦×鶨Òå·þÎñ¡£Í¼2-8ÏÔʾÁËFTGOÓ¦ÓóÌÐò´ÓÄÜÁ¦µ½·þÎñµÄÓ³É䡣ijЩ¶¥¼¶ÄÜÁ¦£¨Èç»á¼Æ¼ÇÕËÄÜÁ¦£©½«Ó³Éäµ½·þÎñ¡£ÔÚÆäËûÇé¿öÏ£¬×ÓÄÜÁ¦Ó³Éäµ½·þÎñ¡£
¾ö¶¨½«Äĸö¼¶±ðµÄÄÜÁ¦²ã´Î½á¹¹Ó³Éäµ½·þÎñÊÇÒ»¸ö·Ç³£Ö÷¹ÛµÄÅжϡ£ÎÒ¶ÔÕâÖÖÌØ¶¨Ó³ÉäµÄÀíÓÉÈçÏ£º
ÎÒ½«¹©Ó¦É̹ÜÀíµÄ×ÓÄÜÁ¦Ó³Éäµ½Á½ÖÖ·þÎñ£¬ÒòΪ²Í¹ÝºÍËͲÍÔ±ÊǷdz£²»Í¬ÀàÐ͵ũӦÉÌ¡£
ÎÒ½«¶©µ¥»ñÈ¡ºÍÂÄÐÐÄÜÁ¦Ó³Éäµ½Èý¸ö·þÎñ£¬Ã¿¸ö·þÎñ¸ºÔðÁ÷³ÌµÄ²»Í¬½×¶Î¡£ÎÒ½«ËͲÍÔ±¿ÉÓÃÐÔ¹ÜÀí£¨Courier
availability management£©ºÍ½»¸¶¹ÜÀí£¨Delivery management£©ÄÜÁ¦½áºÏÆðÀ´£¬²¢½«ËüÃÇÓ³Éäµ½µ¥¸ö·þÎñ£¬ÒòΪËüÃǽ»Ö¯ÔÚÒ»Æð¡£
ÎÒ½«»á¼Æ¼ÇÕËÄÜÁ¦Ó³Éäµ½×Ô¼ºµÄ¶ÀÁ¢·þÎñ£¬ÒòΪ²»Í¬ÀàÐÍµÄ»á¼Æ¼ÇÕË¿´ÆðÀ´ºÜÏàËÆ¡£

Ö®ºó½«Õë¶Ô²Í¹ÝºÍËͲÍÔ±µÄ·ÑÓÃÖ§¸¶ºÍÕë¶ÔÏû·ÑÕߵĶ©µ¥ÊÕ¿î·Ö¿ªÊÇÓÐÒâÒåµÄ¡£
Î§ÈÆÄÜÁ¦×éÖ¯·þÎñµÄÒ»¸ö¹Ø¼üºÃ´¦ÊÇ£¬ÒòΪËüÃÇÊÇÎȶ¨µÄ£¬ËùÒÔ×îÖյļܹ¹Ò²½«Ïà¶ÔÎȶ¨¡£¼Ü¹¹µÄ¸÷¸ö×é¼þ¿ÉÄÜ»áËæ×ÅÒµÎñµÄ¾ßÌåʵÏÖ·½Ê½µÄ±ä»¯¶ø·¢Õ¹£¬µ«¼Ü¹¹ÈÔ±£³Ö²»±ä¡£
»°ËäÈç´Ë£¬ÖØÒªµÄÊÇÒª¼Çסͼ2-8ÖÐÏÔʾµÄ·þÎñ½ö½öÊǶ¨Òå¼Ü¹¹µÄµÚÒ»´Î³¢ÊÔ¡£Ëæ×ÅÎÒÃǶÔÓ¦ÓóÌÐòÁìÓòµÄÁ˽âÔ½À´Ô½¶à£¬ËüÃÇ¿ÉÄÜ»áËæ×Åʱ¼äµÄÍÆÒÆ¶ø±ä»¯£¬ÌرðÊǼܹ¹¶¨ÒåÁ÷³ÌÖеÄÒ»¸öÖØÒª²½ÖèÊǵ÷²é·þÎñÈçºÎÔÚÿ¸ö¹Ø¼ü¼Ü¹¹·þÎñÖÐÐ×÷¡£ÀýÈ磬Äã¿ÉÄܻᷢÏÖÓÉÓÚ¹ý¶àµÄ½ø³Ì¼äͨÐŶøµ¼ÖÂÌØ¶¨µÄ·Ö½âЧÂʵÍÏ£¬µ¼ÖÂÄã±ØÐë°ÑһЩ·þÎñ×éºÏÔÚÒ»Æð¡£Ïà·´£¬·þÎñ¿ÉÄÜ»áÔÚ¸´ÔÓÐÔ·½ÃæÔö³¤µ½ÖµµÃ½«Æä²ð·ÖΪ¶à¸ö·þÎñµÄ³Ì¶È¡£´ËÍ⣬ÔÚ2.2.5½ÚÖн«ÃèÊö¿ÉÄܵ¼ÖÂÄãÖØÐÂÉóÊÓµ±Ç°·Ö½â¾ö²ßµÄ¼¸¸öÕϰ¡£
ÏÖÔÚÈÃÎÒÃÇ¿´¿´»ùÓÚÁìÓòÇý¶¯Éè¼Æ·Ö½âÓ¦ÓóÌÐòµÄ·½·¨¡£
2.2.3¡¡¸ù¾Ý×ÓÓò½øÐзþÎñ²ð·Ö
Eric EvansÔÚËûµÄ¾µäÖø×÷ÖУ¨Addison-Wesley Professional£¬2003£©Ìá³öµÄÁìÓòÇý¶¯Éè¼ÆÊǹ¹½¨¸´ÔÓÈí¼þµÄ·½·¨ÂÛ£¬ÕâЩÈí¼þͨ³£¶¼ÒÔÃæÏò¶ÔÏóºÍÁìÓòÄ£ÐÍΪºËÐÄ¡£ÁìÓòÄ£ÐÍÒÔ½â¾ö¾ßÌåÎÊÌâµÄ·½Ê½°üº¬ÁËÒ»¸öÁìÓòÄÚµÄ֪ʶ¡£Ëü¶¨ÒåÁ˵±Ç°ÁìÓòÏà¹ØÍŶӵĴʻã±í£¬DDDÒ²³ÆÖ®ÎªÍ¨ÓÃÓïÑÔ£¨Ubiquitous
language£©¡£ÁìÓòÄ£Ðͻᱻ½ôÃܵØÓ³Éäµ½Ó¦ÓõÄÉè¼ÆºÍʵÏÖ»·½Ú¡£ÔÚ΢·þÎñ¼Ü¹¹µÄÉè¼Æ²ãÃæ£¬DDDÓÐÁ½¸öÌØ±ðÖØÒªµÄ¸ÅÄ×ÓÓòºÍÏÞ½çÉÏÏÂÎÄ¡£
´«Í³µÄÆóÒµ¼Ü¹¹½¨Ä£·½Ê½ÍùÍù»áΪÕû¸öÆóÒµ½¨Á¢Ò»¸öµ¥¶ÀµÄÄ£ÐÍ£¬DDDÔò²ÉÈ¡ÁËÍêÈ«²»Í¬µÄ·½Ê½¡£ÔÚÕâÑùµÄÄ£ÐÍÖУ¬»áÓÐÊÊÓÃÓÚÕû¸öÓ¦ÓÃÈ«¾ÖµÄÒµÎñʵÌ嶨Ò壬ÀýÈç¿Í»§»ò¶©µ¥¡£ÕâÀഫͳ½¨Ä£·½Ê½µÄÌôÕ½ÔÚÓÚ£¬ÈÃ×éÖ¯ÄÚµÄËùÓÐÍŶӶ¼¶ÔÈ«¾Öµ¥Ò»µÄ½¨Ä£ºÍÊõÓﶨÒå´ï³ÉÒ»ÖÂÊǷdz£À§Äѵġ£ÁíÍ⣬¶ÔÓÚ×éÖ¯ÖеÄÌØ¶¨ÍŶӶøÑÔ£¬Õâ¸öµ¥Ò»µÄÒµÎñʵÌ嶨Òå¿ÉÄܹýÓÚ¸´ÔÓ£¬³¬³öÁËËûÃǵÄÐèÇó¡£´ËÍ⣬ÕâЩ´«Í³µÄÁìÓòÄ£ÐÍ¿ÉÄÜ»áÔì³É»ìÂÒ£¬ÒòΪ×éÖ¯ÄÚÓÐЩÍŶӿÉÄÜÕë¶Ô²»Í¬µÄ¸ÅÄîʹÓÃÏàͬµÄÊõÓ¶øÒ²ÓÐЩÍŶӻáÕë¶Ôͬһ¸ö¸ÅÄîʹÓò»Í¬µÄÊõÓï¡£DDDͨ¹ý¶¨Òå¶à¸öÁìÓòÄ£ÐÍÀ´±ÜÃâÕâ¸öÎÊÌ⣬ÿ¸öÁìÓòÄ£ÐͶ¼ÓÐÃ÷È·µÄ·¶Î§¡£
ÁìÓòÇý¶¯ÎªÃ¿Ò»¸ö×ÓÓò¶¨Òåµ¥¶ÀµÄÁìÓòÄ£ÐÍ¡£×ÓÓòÊÇÁìÓòµÄÒ»²¿·Ö£¬ÁìÓòÊÇDDDÖÐÓÃÀ´ÃèÊöÓ¦ÓóÌÐòÎÊÌâÓòµÄÒ»¸öÊõÓʶ±ð×ÓÓòµÄ·½Ê½¸úʶ±ðÒµÎñÄÜÁ¦Ò»Ñù£º·ÖÎöÒµÎñ²¢Ê¶±ðÒµÎñµÄ²»Í¬×¨ÒµÁìÓò£¬·ÖÎö²ú³öµÄ×ÓÓò¶¨Òå½á¹ûÒ²»á¸úÒµÎñÄÜÁ¦·Ç³£½Ó½ü¡£FTGOµÄ×ÓÓò°üÀ¨£º¶©µ¥»ñÈ¡¡¢¶©µ¥¹ÜÀí¡¢²Í¹Ý¹ÜÀí¡¢ËÍ²ÍºÍ»á¼Æ¡£ÕýÈçÄãËù¼û£ºÕâЩ×ÓÓò¸úÎÒÃÇ֮ǰ¶¨ÒåµÄÒµÎñÄÜÁ¦·Ç³£½Ó½ü¡£
DDD°ÑÁìÓòÄ£ÐÍµÄ±ß½ç³ÆÎªÏÞ½çÉÏÏÂÎÄ£¨bounded context£©¡£ÏÞ½çÉÏÏÂÎİüÀ¨ÊµÏÖÕâ¸öÄ£Ð͵ĴúÂ뼯ºÏ¡£µ±Ê¹ÓÃ΢·þÎñ¼Ü¹¹Ê±£¬Ã¿Ò»¸öÏÞ½çÉÏÏÂÎĶÔÓ¦Ò»¸ö»òÕßÒ»×é·þÎñ¡£»»Ò»ÖÖ˵·¨£¬ÎÒÃÇ¿ÉÒÔͨ¹ýDDDµÄ·½Ê½¶¨Òå×ÓÓò£¬²¢°Ñ×ÓÓò¶ÔӦΪÿһ¸ö·þÎñ£¬ÕâÑù¾ÍÍê³ÉÁË΢·þÎñ¼Ü¹¹µÄÉè¼Æ¹¤×÷¡£Í¼2-9չʾÁË×ÓÓòºÍ·þÎñÖ®¼äµÄÓ³É䣬ÿһ¸ö×ÓÓò¶¼ÓÐÊôÓÚËüÃÇ×Ô¼ºµÄÁìÓòÄ£ÐÍ¡£

DDDºÍ΢·þÎñ¼Ü¹¹¼òÖ±¾ÍÊÇÌìÉúÒ»¶Ô¡£DDDµÄ×ÓÓòºÍÏÞ½çÉÏÏÂÎĵĸÅÄ¿ÉÒԺܺõظú΢·þÎñ¼Ü¹¹ÖеķþÎñ½øÐÐÆ¥Åä¡£¶øÇÒ£¬Î¢·þÎñ¼Ü¹¹ÖеÄ×ÔÖλ¯ÍŶӸºÔð·þÎñ¿ª·¢µÄ¸ÅÄҲ¸úDDDÖÐÿ¸öÁìÓòÄ£ÐͶ¼ÓÉÒ»¸ö¶ÀÁ¢ÍŶӸºÔ𿪷¢µÄ¸ÅÄîÎǺϡ£¸üÓÐȤµÄÊÇ£¬×ÓÓòÓÃÓÚËü×Ô¼ºµÄÁìÓòÄ£ÐÍÕâ¸ö¸ÅÄΪÏû³ýÉϵÛÀàºÍÓÅ»¯·þÎñ²ð·ÖÌṩÁ˺ð취¡£
°´×ÓÓò·Ö½âºÍ°´ÒµÎñÄÜÁ¦·Ö½âÊǶ¨ÒåÓ¦ÓóÌÐòµÄ΢·þÎñ¼Ü¹¹µÄÁ½ÖÖÖ÷Ҫģʽ¡£µ«ÊÇ£¬Ò²ÓÐһЩÓÐÓõIJð·ÖÖ¸µ¼ÔÔòÔ´ÓÚÃæÏò¶ÔÏóµÄÉè¼Æ¡£ÎÒÃÇÀ´ÏêϸÌÖÂÛÕâЩÔÔò¡£
2.2.4¡¡²ð·ÖµÄÖ¸µ¼ÔÔò
µ½Ä¿Ç°ÎªÖ¹£¬ÔÚ±¾ÕÂÖУ¬ÎÒÃÇÒѾÁ˽âÁ˶¨Òå΢·þÎñ¼Ü¹¹µÄÖ÷Òª·½·¨¡£ÔÚÓ¦ÓÃ΢·þÎñ¼Ü¹¹Ä£Ê½Ê±£¬ÎÒÃÇ»¹¿ÉÒÔ²ÉÄɺÍʹÓÃÃæÏò¶ÔÏóÉè¼ÆÖеÄһЩÔÔò¡£ÃæÏò¶ÔÏóÉè¼ÆµÄһЩÔÔòÒ²¿ÉÒÔÓÃÓÚÖ¸µ¼Î¢·þÎñ¼Ü¹¹µÄÉè¼Æ¹¤×÷¡£ÕâЩÔÔòÓÉRobert
C. MartinÔÚËûµÄÖø×÷¡¶Designing Object Oriented C++ Applications
Using The Booch Method¡·£¨Prentice Hall£¬1995£©ÖÐÌá³ö¡£µÚÒ»¸öÔÔò¾ÍÊÇÔÚ¶¨ÒåÀàµÄÖ°Ôðʱ£¬Ó¦¸Ã×ñѵ¥Ò»Ö°ÔðÔÔò£¨Single
Responsibility Principle£¬SRP£©¡£µÚ¶þ¸öÔÔòÊǰÑÀà×é³É°üʱ£¬Ó¦¸Ã×ñѱհüÔÔò£¨Common
Closure Principle£¬CCP£©¡£ÈÃÎÒÃÇÀ´¿´¿´ÕâЩÔÔòÈçºÎÓ¦Óõ½Î¢·þÎñ¼Ü¹¹¡£
ÀàËù³ÐÔØµÄÿһ¸öÖ°Ôð¶¼ÊǶÔËü½øÐÐÐ޸ĵÄDZÔÚÔÒò¡£Èç¹ûÒ»¸öÀà³ÐÔØÁ˶à¸öÖ°Ô𣬲¢ÇÒ»¥ÏàÖ®¼äµÄÐÞ¸ÄÊǶÀÁ¢µÄ£¬ÄÇôÕâ¸öÀà¾Í»á±äµÃ·Ç³£²»Îȶ¨¡£×ñÕÕSRPÔÔò£¬ÄãËù¶¨ÒåµÄÿһ¸öÀà¶¼Ó¦¸ÃÖ»ÓÐÒ»¸öÖ°Ôð£¬Òò´ËÒ²¾ÍÖ»ÓÐÒ»¸öÀíÓɶÔËü½øÐÐÐ޸ġ£
ÎÒÃÇÔÚÉè¼ÆÎ¢·þÎñ¼Ü¹¹Ê±Ó¦¸Ã×ñÑSRPÔÔò£¬Éè¼ÆÐ¡µÄ¡¢Äھ۵ġ¢½ö½öº¬Óе¥Ò»Ö°ÔðµÄ·þÎñ¡£Õâ»áËõС·þÎñµÄ´óС²¢ÌáÉýËüµÄÎȶ¨ÐÔ¡£ÐµÄFTGO¼Ü¹¹ÊÇÓ¦ÓÃSRPµÄÒ»¸öÀý×Ó¡£Îª¿Í»§»ñÈ¡²ÍʳµÄÿһ¸ö·½Ã棨¶©µ¥»ñÈ¡¡¢¶©µ¥×¼±¸¡¢ËͲ͵ȣ©¶¼ÓÉÒ»¸öµ¥Ò»µÄ·þÎñ³ÐÔØ¡£
±Õ°üÔÔò
ÁíÍâÒ»¸öÓÐÓõÄÔÔòÊDZհüÔÔò£¨CCP£©£º
ÔÚ°üÖаüº¬µÄËùÓÐÀàÓ¦¸ÃÊǶÔͬÀàµÄ±ä»¯µÄÒ»¸ö¼¯ºÏ£¬Ò²¾ÍÊÇ˵£¬Èç¹û¶Ô°ü×ö³öÐ޸ģ¬ÐèÒªµ÷ÕûµÄÀàÓ¦¸Ã¶¼ÔÚÕâ¸ö°üÖ®ÄÚ¡£
¡ªRobert C. Martin
Õâ¾ÍÒâζ×Å£¬Èç¹ûÓÉÓÚijЩÔÒò£¬Á½¸öÀàµÄÐ޸ıØÐëñîºÏÏȺó·¢Éú£¬ÄÇô¾ÍÓ¦¸Ã°ÑËüÃÇ·ÅÔÚͬһ¸ö°üÄÚ¡£Ò²Ðí£¬ÕâЩÀàʵÏÖÁËÒ»Ð©ÌØ¶¨µÄÒµÎñ¹æÔòµÄ²»Í¬·½Ãæ¡£ÕâÑù×öµÄÄ¿±êÊǵ±ÒµÎñ¹æÔò·¢Éú±ä»¯Ê±£¬¿ª·¢ÕßÖ»ÐèÒª¶ÔÒ»¸ö½»¸¶°ü×ö³öÐ޸쬶ø²»ÊÇ´ó¹æÄ£µØÐ޸ģ¨ºÍÖØÐ±àÒ룩Õû¸öÓ¦ÓᣲÉÓñհüÔÔò£¬¼«´óµØ¸ÄÉÆÁËÓ¦ÓóÌÐòµÄ¿Éά»¤ÐÔ¡£
ÔÚ΢·þÎñ¼Ü¹¹Ï²ÉÓÃCCPÔÔò£¬ÕâÑùÎÒÃǾÍÄܰѸù¾ÝͬÑùÔÒò½øÐб仯µÄ·þÎñ·ÅÔÚÒ»¸ö×é¼þÄÚ¡£ÕâÑù×ö¿ÉÒÔ¿ØÖÆ·þÎñµÄÊýÁ¿£¬µ±ÐèÇó·¢Éú±ä»¯Ê±£¬±ä¸üºÍ²¿ÊðÒ²¸ü¼ÓÈÝÒס£ÀíÏëÇé¿öÏ£¬Ò»¸ö±ä¸üÖ»»áÓ°ÏìÒ»¸öÍŶӺÍÒ»¸ö·þÎñ¡£CCPÊǽâ¾ö·Ö²¼Ê½µ¥ÌåÕâÖÖ¿Éŵķ´Ä£Ê½µÄ·¨±¦¡£
µ¥Ò»Ö°ÔðÔÔòºÍ±Õ°üÔÔòÊÇBob MartinÖÆ¶¨µÄʮһÏîÔÔòÖеÄÁ½Ïî¡£ËüÃÇÔÚ¿ª·¢Î¢·þÎñ¼Ü¹¹Ê±ÌرðÓÐÓá£ÔÚÉè¼ÆÀàºÍ°üʱ¿ÉÒÔʹÓÃÆäÓàµÄ¾Å¸öÔÔò¡£Óйص¥Ò»Ö°ÔðÔÔò¡¢±Õ°üÔÔòºÍÆäËûÃæÏò¶ÔÏóÉè¼ÆÔÔòµÄ¸ü¶àÐÅÏ¢£¬Çë²ÎÔÄBob
MartinÍøÕ¾ÉϵÄÎÄÕ¡¶ÃæÏò¶ÔÏóÉè¼ÆµÄÔÔò¡·¡£
°´ÒµÎñÄÜÁ¦ºÍ×ÓÓòÒÔ¼°µ¥Ò»Ö°ÔðÔÔòºÍ±Õ°üÔÔò½øÐзֽâÊǽ«Ó¦ÓóÌÐò·Ö½âΪ·þÎñµÄºÃ·½·¨¡£ÎªÁËÓ¦ÓÃËüÃDz¢³É¹¦¿ª·¢Î¢·þÎñ¼Ü¹¹£¬Ä㻹±ØÐë½â¾öһЩÊÂÎñ¹ÜÀíºÍ½ø³Ì¼äͨÐÅÎÊÌâ¡£
2.2.5¡¡²ð·Öµ¥ÌåÓ¦ÓÃΪ·þÎñµÄÄѵã
´Ó±íÃæÉÏ¿´£¬Í¨¹ý¶¨ÒåÓëÒµÎñÄÜÁ¦»ò×ÓÓòÏà¶ÔÓ¦µÄ·þÎñÀ´´´½¨Î¢·þÎñ¼Ü¹¹µÄ²ßÂÔ¿´ÆðÀ´ºÜ¼òµ¥¡£µ«ÊÇ£¬Äã¿ÉÄÜ»áÓöµ½¼¸¸öÕϰ£º
ÍøÂçÑÓ³Ù¡£
ͬ²½½ø³Ì¼äͨÐŵ¼Ö¿ÉÓÃÐÔ½µµÍ¡£
ÔÚ·þÎñÖ®¼äά³ÖÊý¾ÝÒ»ÖÂÐÔ¡£
»ñȡһÖµÄÊý¾ÝÊÓͼ¡£
ÉϵÛÀà×è°Á˲ð·Ö¡£
ÈÃÎÒÃÇÀ´¿´¿´Ã¿¸öÎÊÌ⣬ÏÈ´ÓÍøÂçÑÓ³Ù¿ªÊ¼¡£
ÍøÂçÑÓ³Ù
ÍøÂçÑÓ³ÙÊÇ·Ö²¼Ê½ÏµÍ³ÖÐÒ»Ö±´æÔÚµÄÎÊÌâ¡£Äã¿ÉÄܻᷢÏÖ£¬¶Ô·þÎñµÄÌØ¶¨·Ö½â»áµ¼ÖÂÁ½¸ö·þÎñÖ®¼äµÄ´óÁ¿Íù·µµ÷Óá£ÓÐʱ£¬Äã¿ÉÒÔͨ¹ýʵʩÅú´¦ÀíAPIÔÚÒ»´ÎÍù·µÖлñÈ¡¶à¸ö¶ÔÏ󣬴Ӷø½«ÑÓ³Ù¼õÉÙµ½¿É½ÓÊܵÄÊýÁ¿¡£µ«ÔÚÆäËûÇé¿öÏ£¬½â¾ö·½°¸ÊǰѶà¸öÏà¹ØµÄ·þÎñ×éºÏÔÚÒ»Æð£¬Óñà³ÌÓïÑԵĺ¯Êýµ÷ÓÃÌæ»»°º¹óµÄ½ø³Ì¼äͨÐÅ¡£
ͬ²½½ø³Ì¼äͨÐŵ¼Ö¿ÉÓÃÐÔ½µµÍ
ÁíÒ»¸öÐèÒª¿¼ÂǵÄÎÊÌâÊÇÈçºÎ´¦Àí½ø³Ì¼äͨÐŶø²»½µµÍϵͳµÄ¿ÉÓÃÐÔ¡£ÀýÈ磬ʵÏÖcreateOrder()²Ù×÷×î³£¼ûµÄ·½Ê½ÊÇÈÃOrder
ServiceʹÓÃRESTͬ²½µ÷ÓÃÆäËû·þÎñ¡£ÕâÑù×öµÄ±×¶ËÊÇRESTÕâÑùµÄÐÒé»á½µµÍOrder ServiceµÄ¿ÉÓÃÐÔ¡£Èç¹ûÈκÎÒ»¸ö±»µ÷ÓõķþÎñ´¦ÔÚ²»¿ÉÓõÄ״̬£¬ÄÇô¶©µ¥¾ÍÎÞ·¨´´½¨ÁË¡£ÓÐʱºòÕâ¿ÉÄÜÊÇÒ»¸ö²»µÃÒѵÄÕÛÖУ¬µ«ÊÇÔÚµÚ3ÕÂÖÐѧϰÒì²½ÏûÏ¢Ö®ºó£¬Äã¾Í»á·¢ÏÖÆäʵÓиüºÃµÄ°ì·¨À´Ïû³ýÕâÀàͬ²½µ÷ÓòúÉúµÄ½ôñîºÏ²¢ÌáÉý¿ÉÓÃÐÔ¡£
ÔÚ·þÎñÖ®¼äά³ÖÊý¾ÝÒ»ÖÂÐÔ
ÁíÒ»¸öÌôÕ½ÊÇÈçºÎÔÚijЩϵͳ²Ù×÷ÐèÒª¸üжà¸ö·þÎñÖеÄÊý¾Ýʱ£¬ÈÔ¾Éά»¤·þÎñÖ®¼äµÄÊý¾ÝÒ»ÖÂÐÔ¡£ÀýÈ磬µ±²Í¹Ý½ÓÊܶ©µ¥Ê±£¬±ØÐëÔÚKitchen
ServiceºÍDelivery ServiceÖÐͬʱ½øÐиüС£Kitchen Service»á¸ü¸ÄTicketµÄ״̬¡£Delivery
Service°²ÅŶ©µ¥µÄ½»¸¶¡£ÕâЩ¸üж¼±ØÐëÒÔÔ×Ó»¯µÄ·½Ê½Íê³É¡£
´«Í³µÄ½â¾ö·½°¸ÊÇʹÓûùÓÚÁ½½×¶ÎÌá½»£¨two phase commit£©µÄ·Ö²¼Ê½ÊÂÎñ¹ÜÀí»úÖÆ¡£µ«ÕýÈçÄ㽫ÔÚµÚ4ÕÂÖп´µ½µÄÄÇÑù£¬¶ÔÓÚÏÖ½ñµÄÓ¦ÓóÌÐò¶øÑÔ£¬Õâ²»ÊÇÒ»¸öºÃµÄÑ¡Ôñ£¬Äã±ØÐëʹÓÃÒ»Öַdz£²»Í¬µÄ·½·¨À´´¦ÀíÊÂÎñ¹ÜÀí£¬Õâ¾ÍÊÇSaga¡£SagaÊÇһϵÁÐʹÓÃÏûÏ¢Ð×÷µÄ±¾µØÊÂÎñ¡£Saga±È´«Í³µÄACIDÊÂÎñ¸ü¸´ÔÓ£¬µ«ËüÃÇÔÚÐí¶àÇé¿ö϶¼Äܹ¤×÷µÃºÜºÃ¡£SagaµÄÒ»¸öÏÞÖÆÊÇËüÃÇ×îÖÕÊÇÒ»Öµġ£Èç¹ûÄãÐèÒªÒÔÔ×Ó·½Ê½¸üÐÂijЩÊý¾Ý£¬ÄÇôËü±ØÐëλÓÚµ¥¸ö·þÎñÖУ¬Õâ¿ÉÄÜÊÇ·Ö½âµÄÕϰ¡£
»ñȡһÖµÄÊý¾ÝÊÓͼ
·Ö½âµÄÁíÒ»¸öÕϰÊÇÎÞ·¨¿ç¶à¸öÊý¾Ý¿â»ñµÃÕæÕýÒ»ÖµÄÊý¾ÝÊÓͼ¡£ÔÚµ¥ÌåÓ¦ÓóÌÐòÖУ¬ACIDÊÂÎñµÄÊôÐÔ±£Ö¤²éѯ½«·µ»ØÊý¾Ý¿âµÄÒ»ÖÂÊÓͼ¡£Ïà·´£¬ÔÚ΢·þÎñ¼Ü¹¹ÖУ¬¼´Ê¹Ã¿¸ö·þÎñµÄÊý¾Ý¿âÊÇÒ»Öµģ¬ÄãÒ²ÎÞ·¨»ñµÃÈ«¾ÖÒ»ÖµÄÊý¾ÝÊÓͼ¡£Èç¹ûÄãÐèҪһЩÊý¾ÝµÄÒ»ÖÂÊÓͼ£¬ÄÇôËü±ØÐëפÁôÔÚµ¥¸ö·þÎñÖУ¬ÕâÒ²ÊÇ·þÎñ·Ö½âËùÃæÁÙµÄÎÊÌâ¡£ÐÒÔ˵ÄÊÇ£¬ÔÚʵ¼ùÖÐÕâºÜÉÙ´øÀ´ÕæÕýµÄÎÊÌâ¡£
ÉϵÛÀà×è°Á˲ð·Ö
·Ö½âµÄÁíÒ»¸öÕϰÊÇ´æÔÚËùνµÄÉϵÛÀà¡£ÉϵÛÀàÊÇÔÚÕû¸öÓ¦ÓóÌÐòÖÐʹÓõÄÈ«¾ÖÀࣨhttp://wiki.c2.com/?GodClass£©
¡£ÉϵÛÀàͨ³£ÎªÓ¦ÓóÌÐòµÄÐí¶à²»Í¬·½ÃæÊµÏÖÒµÎñÂß¼¡£ËüÓдóÁ¿×Ö¶ÎÓ³Éäµ½¾ßÓÐÐí¶àÁеÄÊý¾Ý¿â±í¡£´ó¶àÊýÓ¦ÓóÌÐòÖÁÉÙÓÐÒ»¸öÕâÑùµÄÉϵÛÀ࣬ÿ¸öÀà´ú±íÒ»¸ö¶ÔÁìÓòÖÁ¹ØÖØÒªµÄ¸ÅÄî£ºÒøÐÐÕË»§¡¢µç×ÓÉÌÎñ¶©µ¥¡¢±£ÏÕÕþ²ß£¬µÈµÈ¡£ÒòΪÉϵÛÀཫӦÓóÌÐòµÄÐí¶à²»Í¬·½ÃæµÄ״̬ºÍÐÐΪÀ¦°óÔÚÒ»Æð£¬ËùÒÔ½«Ê¹ÓÃËüµÄÈκÎÒµÎñÂß¼²ð·ÖΪ·þÎñÍùÍù¶¼ÊÇÒ»¸ö²»¿ÉÓâÔ½µÄÕϰ¡£
OrderÀàÊÇFTGOÓ¦ÓóÌÐòÖÐÉϵÛÀàµÄÒ»¸öºÜºÃµÄÀý×Ó¡£Õâ²¢²»Ææ¹Ö£º±Ï¾¹FTGOµÄÄ¿µÄÊÇÏò¿Í»§ÌṩʳƷ¶©µ¥¡£ÏµÍ³µÄ´ó¶àÊý²¿·Ö¶¼Éæ¼°¶©µ¥¡£Èç¹ûFTGOÓ¦ÓóÌÐò¾ßÓе¥¸öÁìÓòÄ£ÐÍ£¬ÔòOrderÀཫÊÇÒ»¸ö·Ç³£´óµÄÀà¡£Ëü½«¾ßÓÐÓëÓ¦ÓóÌÐòµÄÐí¶à²»Í¬²¿·ÖÏà¶ÔÓ¦µÄ״̬ºÍÐÐΪ¡£Í¼2-10ÏÔʾÁËʹÓô«Í³½¨Ä£¼¼Êõ´´½¨µÄOrderÀàµÄ½á¹¹¡£
ÈçÄãËù¼û£¬OrderÀà¾ßÓÐÓë¶©µ¥´¦Àí¡¢²Í¹Ý¶©µ¥¹ÜÀí¡¢ËͲͺ͸¶¿îÏà¶ÔÓ¦µÄ×ֶμ°·½·¨¡£ÓÉÓÚÒ»¸öÄ£ÐͱØÐëÃèÊöÀ´×ÔÓ¦ÓóÌÐòµÄ²»Í¬²¿·ÖµÄ״̬ת»»£¬Òò´Ë¸ÃÀ໹¾ßÓи´ÔÓµÄ״̬ģÐÍ¡£ÔÚĿǰÇé¿öÏ£¬Õâ¸öÀàµÄ´æÔÚʹµÃ½«´úÂë·Ö¸î³É·þÎñ±äµÃ¼«ÆäÀ§ÄÑ¡£
Ò»ÖÖ½â¾ö·½°¸Êǽ«OrderÀà´ò°üµ½¿âÖв¢´´½¨Ò»¸öÖÐÑëOrderÊý¾Ý¿â¡£´¦Àí¶©µ¥µÄËùÓзþÎñ¶¼Ê¹Óô˿Ⲣ·ÃÎÊ·ÃÎÊÊý¾Ý¿â¡£ÕâÖÖ·½·¨µÄÎÊÌâÔÚÓÚËüÎ¥·´ÁË΢·þÎñ¼Ü¹¹µÄÒ»¸ö¹Ø¼üÔÔò£¬²¢µ¼ÖÂÎÒÃÇÌØ±ð²»Ô¸Òâ¿´µ½µÄ½ôñîºÏ¡£ÀýÈ磬¶ÔOrderģʽµÄÈκθü¸Ä¶¼ÒªÇóÆäËû¿ª·¢ÍŶÓͬ²½¸üкÍÖØÐ±àÒëËûÃǵĴúÂë¡£
ÁíÒ»ÖÖ½â¾ö·½°¸Êǽ«OrderÊý¾Ý¿â·â×°ÔÚOrder ServiceÖУ¬¸Ã·þÎñÓÉÆäËû·þÎñµ÷ÓÃÒÔ¼ìË÷ºÍ¸üж©µ¥¡£¸ÃÉè¼ÆµÄÎÊÌâÔÚÓÚÕâÑùµÄÒ»¸öOrder
Service½«³ÉΪһ¸ö´¿Êý¾Ý·þÎñ£¬³ÉΪ°üº¬ºÜÉÙ»òûÓÐÒµÎñÂß¼µÄƶѪÁìÓòÄ£ÐÍ£¨anemic domain
model£©¡£ÕâÁ½ÖÖ½â¾ö·½°¸¶¼Ã»ÓÐÎüÒýÁ¦£¬µ«ÐÒÔ˵ÄÊÇ£¬DDDÌṩÁËÒ»¸öºÃµÄ½â¾ö·½°¸¡£
¸üºÃµÄ·½·¨ÊÇÓ¦ÓÃDDD²¢½«Ã¿¸ö·þÎñÊÓΪ¾ßÓÐ×Ô¼ºµÄÁìÓòÄ£Ð͵ĵ¥¶À×ÓÓò¡£ÕâÒâζ×ÅFTGOÓ¦ÓóÌÐòÖÐÓë¶©µ¥ÓйصÄÿ¸ö·þÎñ¶¼ÓÐ×Ô¼ºµÄÁìÓòÄ£Ðͼ°Æä¶ÔÓ¦µÄOrderÀàµÄ°æ±¾¡£Delivery
ServiceÊǶàÁìÓòÄ£Ð͵ÄÒ»¸öºÜºÃµÄÀý×Ó¡£Èçͼ2-11ËùʾΪOrder£¬Ëü·Ç³£¼òµ¥£ºÈ¡²ÍµØÖ·¡¢È¡²Íʱ¼ä¡¢ËͲ͵ØÖ·ºÍËͲÍʱ¼ä¡£´ËÍ⣬Delivery
ServiceʹÓøüºÏÊʵÄDeliveryÃû³Æ£¬¶ø²»ÊdzÆÖ®ÎªOrder¡£ 
Delivery Service¶Ô¶©µ¥µÄÈÎºÎÆäËûÊôÐÔ²»¸ÐÐËȤ¡£
Kitchen ServiceÓÐÒ»¸ö¸ü¼òµ¥µÄ¶©µ¥ÊÓͼ¡£ËüµÄOrder°æ±¾¾ÍÊÇÒ»¸öTicket£¨ºó³ø¹¤µ¥£©¡£Èçͼ2-12Ëùʾ£¬TicketÖ»°üº¬status¡¢requestedDeliveryTime¡¢prepareByTimeÒÔ¼°¸æË߲͹Ý×¼±¸µÄ¶©µ¥ÏîÁÐ±í¡£Ëü²»¹ØÐÄÏû·ÑÕß¡¢¸¶¿î¡¢½»¸¶µÈÕâЩÓëËüÎ޹صÄÊÂÇé¡£

Order Service¾ßÓÐ×ÔӵĶ©µ¥ÊÓͼ£¬Èçͼ2-13Ëùʾ¡£¼´Ê¹ËüÓÐÏ൱¶àµÄ×ֶκͷ½·¨£¬ËüÈÔÈ»±ÈÔʼ°æ±¾µÄÄǸöOrderÉϵÛÀà¼òµ¥µÃ¶à¡£

ÿ¸öÁìÓòÄ£ÐÍÖеÄOrderÀà±íʾͬһOrderÒµÎñʵÌåµÄ²»Í¬·½Ãæ¡£FTGOÓ¦ÓóÌÐò±ØÐëά³Ö²»Í¬·þÎñÖÐÕâЩ²»Í¬¶ÔÏóÖ®¼äµÄÒ»ÖÂÐÔ¡£ÀýÈ磬һµ©Order
ServiceÊÚȨÏû·ÑÕßµÄÐÅÓÿ¨£¬Ëü±ØÐë´¥·¢ÔÚKitchen ServiceÖд´½¨Ticket¡£Í¬Ñù£¬Èç¹ûKitchen
Service¾Ü¾ø¶©µ¥£¬Ôò±ØÐëÔÚOrder ServiceÖÐÈ¡Ïû¶©µ¥£¬²¢ÇÒΪ¿Í»§Í˿ÔÚµÚ4ÕÂÖУ¬ÎÒÃǽ«Ñ§Ï°ÈçºÎʹÓÃÇ°ÃæÌáµ½µÄʼþÇý¶¯»úÖÆSagaÀ´Î¬»¤·þÎñÖ®¼äµÄÒ»ÖÂÐÔ¡£
³ýÁËÔì³ÉһЩ¼¼ÊõÌôÕ½ÒÔÍ⣬ӵÓжà¸öÁìÓòÄ£ÐÍ»¹»áÓ°ÏìÓû§ÌåÑé¡£Ó¦ÓóÌÐò±ØÐëÔÚÓû§ÌåÑ飨¼´Æä×Ô¼ºµÄÁìÓòÄ£ÐÍ£©Óëÿ¸ö·þÎñµÄÁìÓòÄ£ÐÍÖ®¼ä½øÐÐת»»¡£ÀýÈ磬ÔÚFTGOÓ¦ÓóÌÐòÖУ¬ÏòÏû·ÑÕßÏÔʾµÄOrder״̬À´×Ô´æ´¢ÔÚ¶à¸ö·þÎñÖеÄOrderÐÅÏ¢¡£ÕâÖÖת»»Í¨³£ÓÉAPI
Gateway´¦Àí£¬½«ÔÚµÚ8ÕÂÖÐÌÖÂÛ¡£¾¡¹Ü´æÔÚÕâЩÌôÕ½£¬µ«ÔÚ¶¨Òå΢·þÎñ¼Ü¹¹Ê±£¬±ØÐëʶ±ð²¢Ïû³ýÉϵÛÀà¡£
ÎÒÃÇÏÖÔÚÀ´¿´¿´ÈçºÎ¶¨Òå·þÎñAPI¡£
2.2.6¡¡¶¨Òå·þÎñAPI
µ½Ä¿Ç°ÎªÖ¹£¬ÎÒÃÇÓÐÒ»¸öϵͳ²Ù×÷ÁбíºÍÒ»¸öDZÔÚ·þÎñÁÐ±í¡£ÏÂÒ»²½ÊǶ¨Òåÿ¸ö·þÎñµÄAPI£ºÒ²¾ÍÊÇ·þÎñµÄ²Ù×÷ºÍʼþ¡£´æÔÚ·þÎñAPI²Ù×÷ÓÐÒÔÏÂÁ½¸öÔÒò£ºÊ×ÏÈ£¬Ä³Ð©²Ù×÷¶ÔÓ¦ÓÚϵͳ²Ù×÷¡£ËüÃÇÓÉÍⲿ¿Í»§¶Ëµ÷Óã¬Ò²¿ÉÄÜÓÉÆäËû·þÎñµ÷Óá£Áí´Î£¬´æÔÚһЩÆäËû²Ù×÷ÓÃÒÔÖ§³Ö·þÎñÖ®¼äµÄÐ×÷¡£ÕâЩ²Ù×÷½öÓÉÆäËû·þÎñµ÷Óá£
·þÎñͨ¹ý¶ÔÍâ·¢²¼Ê¼þ£¬Ê¹ÆäÄܹ»ÓëÆäËû·þÎñÐ×÷¡£µÚ4Õ½«ÃèÊöÈçºÎʹÓÃʼþÀ´ÊµÏÖSaga£¬ÕâЩSaga¿ÉÒÔά»¤·þÎñÖ®¼äµÄÊý¾ÝÒ»ÖÂÐÔ¡£µÚ7Õ½«ÌÖÂÛÈçºÎʹÓÃʼþÀ´¸üÐÂCQRSÊÓͼ£¬ÕâЩÊÓͼ֧³ÖÓÐЧµÄ²éѯ¡£Ó¦ÓóÌÐò»¹¿ÉÒÔʹÓÃʼþÀ´Í¨ÖªÍⲿ¿Í»§¶Ë¡£ÀýÈ磬¿ÉÒÔʹÓÃWebSockets½«Ê¼þ´«µÝ¸øä¯ÀÀÆ÷¡£
¶¨Òå·þÎñAPIµÄÆðµãÊǽ«Ã¿¸öϵͳ²Ù×÷Ó³Éäµ½·þÎñ¡£Ö®ºóÈ·¶¨·þÎñÊÇ·ñÐèÒªÓëÆäËû·þÎñÐ×÷ÒÔʵÏÖϵͳ²Ù×÷¡£Èç¹ûÐèÒªÐ×÷£¬ÎÒÃǽ«È·¶¨ÆäËû·þÎñ±ØÐëÌṩÄÄЩAPI²ÅÄÜÖ§³ÖÐ×÷¡£Ê×ÏÈÀ´¿´Ò»ÏÂÈçºÎ½«ÏµÍ³²Ù×÷·ÖÅ䏸·þÎñ¡£
°Ñϵͳ²Ù×÷·ÖÅ䏸·þÎñ
µÚÒ»²½ÊÇÈ·¶¨Äĸö·þÎñÊÇÇëÇóµÄ³õʼÈë¿Úµã¡£Ðí¶àϵͳ²Ù×÷¿ÉÒÔÇåÎúµØÓ³Éäµ½·þÎñ£¬µ«ÓÐʱӳÉä»á²»Ì«Ã÷ÏÔ¡£ÀýÈ磬¿¼ÂÇʹÓÃnoteUpdatedLocation()²Ù×÷À´¸üÐÂËͲÍÔ±µÄλÖá£Ò»·½Ã棬ÒòΪËüÓëËͲÍÔ±Óйأ¬ËùÒÔÓ¦¸Ã½«´Ë²Ù×÷·ÖÅ䏸Courier
Service¡£ÁíÒ»·½Ã棬ËüÊÇÐèÒªËͲ͵صãµÄDelivery Service¡£ÔÚÕâÖÖÇé¿öÏ£¬½«²Ù×÷·ÖÅ䏸ÐèÒª²Ù×÷ËùÌṩÐÅÏ¢µÄ·þÎñÊǸüºÃµÄÑ¡Ôñ¡£ÔÚÆäËûÇé¿öÏ£¬½«²Ù×÷·ÖÅ䏸¾ßÓд¦ÀíËüËùÐèÐÅÏ¢µÄ·þÎñ¿ÉÄÜÊÇÓÐÒâÒåµÄ¡£
±í2-2ÏÔʾÁËFTGOÓ¦ÓóÌÐòÖеÄÄÄЩ·þÎñ¸ºÔðÄÄЩ²Ù×÷¡£
°Ñ²Ù×÷·ÖÅ䏸·þÎñºó£¬ÏÂÒ»²½ÊÇÈ·¶¨ÔÚ´¦Àíÿһ¸öϵͳ²Ù×÷ʱ£¬·þÎñÖ®¼äÈçºÎ½»»¥¡£
È·¶¨Ö§³Ö·þÎñÐ×÷ËùÐèÒªµÄAPI
ijЩϵͳ²Ù×÷ÍêÈ«Óɵ¥¸ö·þÎñ´¦Àí¡£ÀýÈ磬ÔÚFTGOÓ¦ÓóÌÐòÖУ¬Consumer ServiceÍêÈ«¶ÀÁ¢µØ´¦ÀícreateConsumer()²Ù×÷¡£µ«ÊÇÆäËûϵͳ²Ù×÷¿çÔ½¶à¸ö·þÎñ¡£´¦ÀíÕâЩÇëÇóÖ®Ò»ËùÐèµÄÊý¾Ý¿ÉÄÜ·ÖÉ¢ÔÚ¶à¸ö·þÎñÖÜΧ¡£ÀýÈ磬ΪÁËʵÏÖcreateOrder()²Ù×÷£¬Order
Service±ØÐëµ÷ÓÃÒÔÏ·þÎñÒÔÑéÖ¤ÆäǰÖÃÌõ¼þ²¢Ê¹ºóÖÃÌõ¼þ³ÉÁ¢£º
Consumer Service£ºÑéÖ¤Ïû·ÑÕßÊÇ·ñ¿ÉÒÔ϶©µ¥²¢»ñÈ¡Æä¸¶¿îÐÅÏ¢¡£
Restaurant Service£ºÑéÖ¤¶©µ¥ÐÐÏîÄ¿£¬ÑéÖ¤ËÍ»õµØÖ·ºÍʱ¼äÊÇ·ñÔÚ²ÍÌüµÄ·þÎñÇøÓòÄÚ£¬ÑéÖ¤¶©µ¥×îµÍÒªÇ󣬲¢»ñµÃ¶©µ¥ÐÐÏîÄ¿µÄ¼Û¸ñ¡£
Kitchen Service£º´´½¨Ticket£¨ºó³ø¹¤µ¥£©¡£
Accounting Service£ºÊÚȨÏû·ÑÕßµÄÐÅÓÿ¨¡£
ͬÑù£¬ÎªÁËʵÏÖacceptOrder()ϵͳ²Ù×÷£¬Kitchen Service±ØÐëµ÷ÓÃDelivery
ServiceÀ´°²ÅÅËͲÍÔ±½»¸¶¶©µ¥¡£±í2-3ÏÔʾÁË·þÎñ¡¢ÐÞ¶©ºóµÄAPI¼°Ð×÷Õß¡£ÎªÁËÍêÕû¶¨Òå·þÎñAPI£¬ÄãÐèÒª·ÖÎöÿ¸öϵͳ²Ù×÷²¢È·¶¨ËùÐèµÄÐ×÷¡£
µ½Ä¿Ç°ÎªÖ¹£¬ÎÒÃÇÒѾȷ¶¨ÁËÿÏî·þÎñʵÏֵķþÎñºÍ²Ù×÷¡£µ«ÖØÒªµÄÊÇÒª¼Çס£¬ÎÒÃǹ´ÀÕ³öµÄ¼Ü¹¹·Ç³£³éÏó¡£ÎÒÃÇûÓÐÑ¡ÔñÈκÎÌØ¶¨µÄ½ø³Ì¼äͨÐż¼Êõ¡£´ËÍ⣬¼´Ê¹ÊõÓï²Ù×÷±íÃ÷ijÖÖ»ùÓÚͬ²½ÇëÇóºÍÏìÓ¦µÄ½ø³Ì¼äͨÐÅ»úÖÆ£¬ÄãÒ²»á·¢ÏÖÒì²½ÏûÏ¢Æð×ÅÖØÒª×÷Óá£ÔÚ±¾ÊéÖУ¬ÎÒ½«»á½éÉÜ¿ÉÄÜÓ°ÏìÕâЩ·þÎñÐ×÷·½Ê½µÄ¼Ü¹¹ºÍÉè¼Æ¸ÅÄî¡£
µÚ3Õ½«½éÉÜÌØ¶¨µÄ½ø³Ì¼äͨÐż¼Êõ£¬°üÀ¨RESTµÈͬ²½Í¨ÐÅ»úÖÆºÍʹÓÃÏûÏ¢´úÀíµÄÒì²½ÏûÏ¢¡£ÎÒ½«ÌÖÂÛͬ²½Í¨ÐÅÈçºÎÓ°Ïì¿ÉÓÃÐÔ²¢ÒýÈë×Ô°üº¬·þÎñµÄ¸ÅÄ¸Ã·þÎñ²»»áͬ²½µ÷ÓÃÆäËû·þÎñ¡£ÊµÏÖ×Ô°üº¬·þÎñµÄÒ»ÖÖ·½·¨ÊÇʹÓõÚ7ÕÂÖнéÉܵÄCQRSģʽ¡£ÀýÈ磬Order
Service¿ÉÒÔά»¤Restaurant ServiceËùÓµÓеÄÊý¾ÝµÄ¸±±¾£¬ÒÔ±ãÏû³ýͬ²½µ÷ÓÃRestaurant
Service½øÐж©µ¥ÑéÖ¤µÄÐèÒª¡£Í¨¹ý¶©ÔÄRestaurant ServiceÔÚÆäÊý¾Ý·¢Éú¸üÐÂʱ¶ÔÍâ·¢²¼µÄʼþ£¬Order
Service¿ÉÒÔά»¤Restaurant ServiceµÄÒ»·ÝÊý¾Ý¸±±¾¡£
µÚ4Õ½«½éÉÜSaga¸ÅÄîÒÔ¼°ËüÈçºÎʹÓÃÒì²½ÏûÏ¢À´Ðµ÷²ÎÓëSagaµÄ·þÎñ¡£³ýÁ˿ɿ¿µØ¸üзÖÉ¢ÔÚ¶à¸ö·þÎñÖеÄÊý¾ÝÖ®Í⣬SagaÒ²ÊÇʵÏÖ×Ô°üº¬·þÎñµÄÒ»ÖÖ·½Ê½¡£ÀýÈ磬ÎÒ½«ÃèÊöÈçºÎʹÓÃSagaʵÏÖcreateOrder()²Ù×÷£¬¸ÃSagaʹÓÃÒì²½ÏûÏ¢µ÷Ó÷þÎñ£¬ÀýÈçConsumer
Service¡¢Kitchen ServiceºÍAccounting Service¡£
µÚ8Õ½«ÃèÊöAPI GatewayµÄ¸ÅÄËü½«API¹«¿ª¸øÍⲿ¿Í»§¶Ë¡£API Gateway¿ÉÒÔʹÓõÚ7ÕÂÖÐÃèÊöµÄAPI×éºÏģʽʵÏÖ²éѯ²Ù×÷£¬¶ø²»ÊǼòµ¥µØ½«Æä·Óɵ½·þÎñ¡£API
GatewayÖеÄÂ߼ͨ¹ýµ÷Óöà¸ö·þÎñ²¢×éºÏ½á¹ûÀ´ÊÕ¼¯²éѯËùÐèµÄÊý¾Ý¡£ÔÚÕâÖÖÇé¿öÏ£¬ÏµÍ³²Ù×÷±»·ÖÅ䏸API
Gateway¶ø²»ÊÇ·þÎñ¡£·þÎñÐèҪʵÏÖAPI GatewayËùÐèÒªµÄ²éѯ²Ù×÷¡£
±¾ÕÂС½á
¼Ü¹¹¾ö¶¨ÁËÈí¼þµÄ¸÷Öַǹ¦ÄÜÐÔÒòËØ£¬±ÈÈç¿Éά»¤ÐÔ¡¢¿É²âÊÔÐÔ¡¢¿É²¿ÊðÐԺͿÉÀ©Õ¹ÐÔ£¬ËüÃÇ»áÖ±½ÓÓ°Ï쿪·¢ËÙ¶È¡£
΢·þÎñ¼Ü¹¹ÊÇÒ»Öּܹ¹·ç¸ñ£¬Ëü¸øÓ¦ÓóÌÐò´øÀ´Á˸ü¸ßµÄ¿Éά»¤ÐÔ¡¢¿É²âÊÔÐÔ¡¢¿É²¿ÊðÐԺͿÉÀ©Õ¹ÐÔ¡£
΢·þÎñÖеķþÎñÊǸù¾ÝÒµÎñÐèÇó½øÐÐ×éÖ¯µÄ£¬°´ÕÕÒµÎñÄÜÁ¦»òÕß×ÓÓò£¬¶ø²»ÊǼ¼ÊõÉϵĿ¼Á¿¡£
ÓÐÁ½ÖÖ·Ö½âģʽ£º
°´ÒµÎñÄÜÁ¦·Ö½â£¬ÆäÆðÔ´ÓÚÒµÎñ¼Ü¹¹¡£
»ùÓÚÁìÓòÇý¶¯Éè¼ÆµÄ¸ÅÄͨ¹ý×ÓÓò½øÐзֽ⡣
¿ÉÒÔͨ¹ýÓ¦ÓÃDDD²¢ÎªÃ¿¸ö·þÎñ¶¨Òåµ¥¶ÀµÄÁìÓòÄ£ÐÍÀ´Ïû³ýÉϵÛÀ࣬ÕýÊÇÉϵÛÀàÒýÆðÁË×è°·Ö½âµÄ½»Ö¯ÒÀÀµÏî¡£ |