±à¼ÍƼö: |
±¾ÎÄÖ÷Òª½éÉÜÁËÈí¼þ¼Ü¹¹¸ÅÄî¡¢·ÖÀà¡¢µäÐÍÓ¦Óüܹ¹¡¢COLA
Ó¦Óüܹ¹¼°Ó¦Óüܹ¹µÄºËÐÄ£¬Ï£Íû¶ÔÄãµÄѧϰÓаïÖú¡£
À´×ÔÓÚÌÚÑ¶Íø£¬ÓÉ»ðÁú¹ûÈí¼þLinda±à¼¡¢ÍƼö¡£ |
|
¼Ü¹¹
1. ʲôÊǼܹ¹£¿
¹ØÓڼܹ¹Õâ¸ö¸ÅÄîºÜÄѸø³öÒ»¸öÃ÷È·µÄ¶¨Ò壬ҲûÓÐÒ»¸ö±ê×¼µÄ¶¨Òå¡£
Ó²ÊÇÒª¸øÒ»¸ö¸ÅÊö£¬ÎÒÈÏΪ¼Ü¹¹¾ÍÊǶÔϵͳÖеÄʵÌåÒÔ¼°ÊµÌåÖ®¼äµÄ¹ØÏµËù½øÐеijéÏóÃèÊö¡£
¼Ü¹¹Ê¼ÓÚ½¨Öþ£¬ÊÇÒòΪÈËÀà·¢Õ¹£¨ÔʼÈË×Ô¸ø×Ô×ãסÔÚÊ÷ÉÏ£¬Ò²¾Í²»ÐèÒª¼Ü¹¹£©£¬·Ö¹¤Ð×÷µÄÐèÒª£¬½«Ä¿±êϵͳ°´Ä³¸öÔÔò½øÐÐÇз֣¬ÇзֵÄÔÔò£¬ÊÇÒª±ãÓÚ²»Í¬µÄ½ÇÉ«½øÐв¢Ðй¤×÷¡£
2. ΪʲôÐèÒª¼Ü¹¹£¿
ÓÐϵͳµÄµØ·½¾ÍÐèÒª¼Ü¹¹£¬´óµ½º½¿Õ·É»ú£¬Ð¡µ½Ò»¸öµçÉÌϵͳÀïÃæµÄÒ»¸ö¹¦ÄÜ×é¼þ¶¼ÐèÒªÉè¼ÆºÍ¼Ü¹¹¡£
ÎÒºÜϲ»¶¡¶ÏµÍ³¼Ü¹¹£º¸´ÔÓϵͳµÄ²úÆ·Éè¼ÆÓ뿪·¢¡·ÀïÃæµÄÒ»¾ä»°£º½á¹¹Á¼ºÃµÄ´´Ôì»î¶¯ÒªÓÅÓÚºÁÎ޽ṹµÄ´´Ôì»î¶¯¡£
ÓëÖ®Ïà¶ÔÓ¦µÄ£¬ÏÖÔںܶàÃô½Ý˼ÏëÌᳫ no design£¬Ö»Òª work ¾ÍºÃ¡£ÆÚ´ýºÃµÄ¼Ü¹¹¿ÉÒÔÔÚµü´úÖÐ×ÔȻӿÏÖ¡£Õâ¸öÏë·¨ÓеãÌ«ÀíÏ뻯ÁË£¬ÔÚÏÖʵÖУ¬Ö»ÒªÄÜ
work µÄ´úÂ룬¹¤³ÌʦÊǺÜÉÙÓж¯Á¦È¥Öع¹ºÍÓÅ»¯µÄ¡£
3. ¼Ü¹¹Ê¦µÄÖ°Ôð
×÷Ϊ¼Ü¹¹Ê¦£¬ÎÒÃÇ×îÖØÒªµÄ¼ÛÖµÓ¦¸ÃÊÇ¡°»¯·±Îª¼ò¡±¡£µ«·²ÈÃÊÂÇé±äµÃ¸ü¸´ÔÓ£¬ÈÃϵͳ±äµÃ¸ü»ÞɬÄѶ®µÄ¼Ü¹¹¶¼ÊÇÖµµÃÉÌȶµÄ¡£
¼Ü¹¹Ê¦µÄ¹¤×÷¾ÍÊÇҪŬÁ¦ÑµÁ·×Ô¼ºµÄ˼ά£¬ÓÃËüÈ¥Àí½â¸´ÔÓµÄϵͳ£¬Í¨¹ýºÏÀíµÄ·Ö½âºÍ³éÏó£¬Ê¹ÄÄЩϵͳ²»ÔÙÄÇôÄѶ®¡£ÎÒÃÇÓ¦¸ÃŬÁ¦¹¹½¨Ò×¶®µÄ¼Ü¹¹£¬Ê¹µÃÔÚϵͳÉϹ¤×÷µÄÆäËûÈËÔ±£¨ÀýÈçÉè¼ÆÕß¡¢ÊµÏÖÕß¡¢²Ù×÷Ô±µÈ£©¿ÉÒÔ½ÏΪÈÝÒ×µØÀí½âÕâ¸öϵͳ¡£
Èí¼þ¼Ü¹¹
Èí¼þ¼Ü¹¹ÊÇÒ»¸öϵͳµÄ²Ýͼ¡£Èí¼þ¼Ü¹¹ÃèÊöµÄ¶ÔÏóÊÇÖ±½Ó¹¹³ÉϵͳµÄ³éÏó×é¼þ¡£¸÷¸ö×é¼þÖ®¼äµÄÁ¬½ÓÔòÃ÷È·ºÍÏà¶ÔϸÖµØÃèÊö×é¼þÖ®¼äµÄͨÐÅ¡£ÔÚʵÏֽ׶Σ¬ÕâЩ³éÏó×é¼þ±»Ï¸»¯ÎªÊµ¼ÊµÄ×é¼þ£¬±ÈÈç¾ßÌåij¸öÀà»òÕß¶ÔÏó¡£ÔÚÃæÏò¶ÔÏóÁìÓòÖУ¬×é¼þÖ®¼äµÄÁ¬½Óͨ³£ÓýӿÚÀ´ÊµÏÖ¡£
Èí¼þ¼Ü¹¹ÎªÈí¼þϵͳÌṩÁËÒ»¸ö½á¹¹¡¢ÐÐΪºÍÊôÐԵĸ߼¶³éÏó£¬Óɹ¹¼þµÄÃèÊö¡¢¹¹¼þµÄÏ໥×÷Óá¢Ö¸µ¼¹¹¼þ¼¯³ÉµÄģʽÒÔ¼°ÕâЩģʽµÄÔ¼Êø×é³É¡£Èí¼þ¼Ü¹¹²»½öÏÔʾÁËÈí¼þÐèÇóºÍÈí¼þ½á¹¹Ö®¼äµÄ¶ÔÓ¦¹ØÏµ£¬¶øÇÒÖ¸¶¨ÁËÕû¸öÈí¼þϵͳµÄ×éÖ¯ºÍÍØÆË½á¹¹£¬ÌṩÁËһЩÉè¼Æ¾ö²ßµÄ»ù±¾ÔÀí¡£
Èí¼þ¼Ü¹¹µÄºËÐļÛÖµÓ¦¸ÃÖ»Î§ÈÆÒ»¸öºËÐÄÃüÌ⣺¿ØÖƸ´ÔÓÐÔ¡£Ëû²¢²»Òâζ×Åij¸öÌØ¶¨µÄ·Ö²ã½á¹¹£¬Ä³¸öÌØ¶¨µÄ·½·¨ÂÛ£¨Æ¶Ñª¡¢DDD
µÈ£©¡£
Èí¼þ¼Ü¹¹·ÖÀà
ÔÚ½éÉÜÓ¦Óüܹ¹Ö®Ç°£¬ÎÒÃÇÏÈÀ´¿´Ò»ÏÂÈí¼þ¼Ü¹¹µÄ·ÖÀà¡£
Ëæ×Å»¥ÁªÍøµÄ·¢Õ¹£¬ÏÖÔÚµÄϵͳҪ֧³ÅÊýÒÚÈËͬʱÔÚÏß¹ºÎͨÐÅ¡¢ÓéÀÖµÄÐèÒª£¬ÏàÓ¦µÄÈí¼þÌåϵ½á¹¹Ò²±äµÃÔ½À´Ô½¸´ÔÓ¡£Èí¼þ¼Ü¹¹µÄº¬ÒåÒ²±äµÃ¸ü¼Ó¿í·º£¬ÎÒÃDz»Äܼòµ¥µØÓÃÒ»¸öÈí¼þ¼Ü¹¹À´Ö¸´úËùÓеÄÈí¼þ¼Ü¹¹¹¤×÷¡£°´ÕÕÎÒ¸öÈËÀí½â£¬ÎÒ½«Èí¼þ¼Ü¹¹»®·ÖΪ£º

ÒµÎñ¼Ü¹¹£ºÓÉÒµÎñ¼Ü¹¹Ê¦¸ºÔð£¬Ò²¿ÉÒÔ³ÆÎªÒµÎñÁìÓòר¼Ò¡¢ÐÐҵר¼Ò¡£ÒµÎñ¼Ü¹¹ÊôÓÚ¶¥²ãÉè¼Æ£¬Æä¶ÔÒµÎñµÄ¶¨ÒåºÍ»®·Ö»áÓ°Ïì×éÖ¯½á¹¹ºÍ¼¼Êõ¼Ü¹¹¡£ÀýÈ磬°¢Àï°Í°ÍÔÚûÓÐÖÐ̨²¿ÃÅ֮ǰ£¬Ã¿¸öÒµÎñ²¿Ãŵļ¼Êõ¼Ü¹¹¶¼ÊÇÑÌ´ÑʽµÄ£¬ÌÔ±¦¡¢Ììè¡¢·ÉÖí¡¢1688
µÈ¸÷ÓÐÒ»Ì×Ìåϵ½á¹¹¡£¶øºó£¬³ÉÁ¢Á˹²ÏíÆ½Ì¨ÊÂÒµ²¿£¬´òͨÁËÕ˺š¢ÉÌÆ·¡¢¶©µ¥µÈÌåϵ£¬ÈÃÉÌÒµ»ù´¡ÊµÊ©µÄ¸´ÓóÉΪ¿ÉÄÜ¡£
Ó¦Óüܹ¹£ºÓÉÓ¦Óüܹ¹Ê¦¸ºÔð£¬ËûÐèÒª¸ù¾ÝÒµÎñ³¡¾°µÄÐèÒª£¬Éè¼ÆÓ¦ÓõIJã´Î½á¹¹£¬Öƶ¨Ó¦Óù淶¡¢¶¨Òå½Ó¿ÚºÍÊý¾Ý½»»¥ÐÒéµÈ¡£²¢¾¡Á¿½«Ó¦Óõĸ´ÔÓ¶È¿ØÖÆÔÚÒ»¸ö¿ÉÒÔ½ÓÊܵÄˮƽ£¬´Ó¶øÔÚ¿ìËÙµÄÖ§³ÅÒµÎñ·¢Õ¹µÄͬʱ£¬ÔÚ±£Ö¤ÏµÍ³µÄ¿ÉÓÃÐԺͿÉά»¤ÐÔµÄͬʱ£¬È·±£Ó¦ÓÃÂú×ã·Ç¹¦ÄÜÊôÐÔÒªÇó£¨ÐÔÄÜ¡¢°²È«¡¢Îȶ¨ÐԵȣ©¡£
·Ö²¼Ê½ÏµÍ³¼Ü¹¹£º·Ö²¼Ê½ÏµÍ³»ù±¾ÊÇÉԾ߹æÄ£ÒµÎñµÄ±ØÑ¡Ïî¡£ËüÐèÒª½â¾ö·þÎñÆ÷¸ºÔØ£¬·Ö²¼Ê½·þÎñµÄ×¢²áºÍ·¢ÏÖ£¬ÏûϢϵͳ£¬»º´æÏµÍ³£¬·Ö²¼Ê½Êý¾Ý¿âµÈÎÊÌ⣬ͬʱ¼Ü¹¹Ê¦ÒªÔÚ
CAP£¨Consistency£¬Availability£¬Partition tolerance£©Ö®¼ä½øÐÐȨºâ¡£
Êý¾Ý¼Ü¹¹£º¶ÔÓÚ¹æÄ£´óһЩµÄ¹«Ë¾£¬Êý¾ÝÖÎÀíÊÇÒ»¸öºÜÖØÒªµÄ¿ÎÌâ¡£ÈçºÎ¶ÔÊý¾ÝÊÕ¼¯¡¢Êý¾Ý´¦ÀíÌṩͳһµÄ·þÎñºÍ±ê×¼£¬ÊÇÊý¾Ý¼Ü¹¹ÐèÒª¹Ø×¢µÄÎÊÌâ¡£ÆäÄ¿µÄ¾ÍÊÇͳһÊý¾Ý¶¨Ò广·¶£¬±ê×¼»¯Êý¾Ý±í´ï£¬ÐγÉÓÐЧÒ×ά»¤µÄÊý¾Ý×ʲú£¬´î½¨Í³Ò»µÄ´óÊý¾Ý´¦ÀíÆ½Ì¨£¬ÐγÉÊý¾ÝʹÓñջ·¡£
ÎïÀí¼Ü¹¹£ºÎïÀí¼Ü¹¹¹Ø×¢Èí¼þÔª¼þÊÇÈçºÎ·Åµ½Ó²¼þÉϵ쬰üÀ¨»ú·¿´î½¨¡¢ÍøÂçÍØÆË½á¹¹£¬ÍøÂç·ÖÁ÷Æ÷¡¢´úÀí·þÎñÆ÷¡¢Web
·þÎñÆ÷¡¢Ó¦Ó÷þÎñÆ÷¡¢±¨±í·þÎñÆ÷¡¢ÕûºÏ·þÎñÆ÷¡¢´æ´¢·þÎñÆ÷ºÍÖ÷»úµÈ¡£
ÔËά¼Ü¹¹£º¸ºÔðÔËάϵͳµÄ¹æ»®¡¢Ñ¡ÐÍ¡¢²¿ÊðÉÏÏߣ¬½¨Á¢¹æ·¶»¯µÄÔËάÌåϵ¡£
µäÐÍÓ¦Óüܹ¹
1. ·Ö²ã¼Ü¹¹
·Ö²ãÊÇÒ»ÖÖ³£¼ûµÄ¸ù¾ÝϵͳÖеĽÇÉ«£¨Ö°Ôð²ð·Ö£©ºÍ×éÖ¯´úÂëµ¥ÔªµÄ³£¹æÊµ¼ù¡£³£¼ûµÄ·Ö²ã½á¹¹ÈçÏÂͼËùʾ£º

2. CQRS
CQS(Command Query Separation£¬ÃüÁî²éѯ·ÖÀë)£¬×îÔçÀ´×ÔÓÚ Betrand
Meyer£¨Eiffel ÓïÑÔÖ®¸¸£¬OCP Ìá³öÕߣ©Ìá³öµÄ¸ÅÄî¡£Æä»ù±¾Ë¼ÏëÔÚÓÚ£¬ÈκÎÒ»¸ö¶ÔÏóµÄ·½·¨¿ÉÒÔ·ÖΪÁ½´óÀࣺ
ÃüÁî(Command): ²»·µ»ØÈκνá¹û(void)£¬µ«»á¸Ä±ä¶ÔÏóµÄ״̬¡£
²éѯ(Query): ·µ»Ø½á¹û£¬µ«ÊDz»»á¸Ä±ä¶ÔÏóµÄ״̬£¬¶ÔϵͳûÓи±×÷Óá£

3. Áù±ßÐμܹ¹
Áù±ßÐμܹ¹ÊÇ Alistair Cockburn ÔÚ 2005 ÄêÌá³ö£¬½â¾öÁË´«Í³µÄ·Ö²ã¼Ü¹¹Ëù´øÀ´µÄÎÊÌ⣬ʵ¼ÊÉÏËüÒ²ÊÇÒ»ÖÖ·Ö²ã¼Ü¹¹£¬Ö»²»¹ý²»ÊÇÉÏÏ£¬¶øÊDZä³ÉÁËÄÚ²¿ºÍÍⲿ£¨ÈçÏÂͼËùʾ£©¡£

Áù±ßÐμܹ¹ÓÖ³ÆÎª¶Ë¿Ú-ÊÊÅäÆ÷¼Ü¹¹£¬Õâ¸öÃû×Ö¸üÈÝÒ×Àí½â¡£Áù±ßÐμܹ¹½«ÏµÍ³·ÖΪÄÚ²¿£¨ÄÚ²¿Áù±ßÐΣ©ºÍÍⲿ£¬ÄÚ²¿´ú±íÁËÓ¦ÓõÄÒµÎñÂß¼£¬Íⲿ´ú±íÓ¦ÓõÄÇý¶¯Âß¼¡¢»ù´¡ÉèÊ©»òÆäËûÓ¦Óá£
ÊÊÅäÆ÷·ÖΪÁ½ÖÖÀàÐÍ£¨ÈçÏÂͼËùʾ£©£¬×ó²à´ú±í UI µÄÊÊÅäÆ÷±»³ÆÎªÖ÷¶¯ÊÊÅäÆ÷£¨Driving Adapters£©£¬ÒòΪÊÇËüÃÇ·¢ÆðÁ˶ÔÓ¦ÓõÄһЩ²Ù×÷¡£¶øÓÒ²à±íʾºÍºó¶Ë¹¤¾ßÁ´½ÓµÄÊÊÅäÆ÷£¬±»³ÆÎª±»¶¯ÊÊÅäÆ÷£¨Driven
Adapters£©£¬ÒòΪËüÃÇÖ»»á¶ÔÖ÷ÊÊÅäÆ÷µÄ²Ù×÷×÷³öÏìÓ¦¡£

4. Ñó´ÐȦ¼Ü¹¹
Ñó´Ð¼Ü¹¹ÓëÁù±ßÐμܹ¹ÓÐ×ÅÏàͬµÄ˼·£¬ËüÃǶ¼Í¨¹ý±àдÊÊÅäÆ÷´úÂ뽫ӦÓúËÐÄ´Ó¶Ô»ù´¡ÉèÊ©µÄ¹Ø×¢Öнâ·Å³öÀ´£¬±ÜÃâ»ù´¡ÉèÊ©´úÂëÉøÍ¸µ½Ó¦ÓúËÐÄÖ®ÖС£ÕâÑùÓ¦ÓÃʹÓõŤ¾ßºÍ´«´ï»úÖÆ¶¼¿ÉÒÔÇáËɵØÌæ»»£¬¿ÉÒÔÒ»¶¨³Ì¶ÈµØ±ÜÃâ¼¼Êõ¡¢¹¤¾ß»òÕß¹©Ó¦ÉÌËø¶¨¡£
²»Í¬µÄÊÇÑó´Ð¼Ü¹¹»¹¸æËßÎÒÃÇ£¬ÆóÒµÓ¦ÓÃÖдæÔÚ×Ų»Ö¹Á½¸ö²ã´Î£¬ËüÔÚÒµÎñÂß¼ÖмÓÈëÁËһЩÔÚÁìÓòÇý¶¯Éè¼ÆµÄ¹ý³ÌÖб»Ê¶±ð³öÀ´µÄ²ã´Î£¨Application£¬Domain
Service£¬Domain model£¬Infrastructure µÈ£©¡£
ÁíÍ⣬Ëü»¹ÓÐ×ÅÍÑÀëÕæÊµ»ù´¡ÉèÊ©ºÍ´«´ï»úÖÆÓ¦ÓÃÈÔÈ»¿ÉÒÔÔËÐеıãÀû£¬ÕâÑù¿ÉÒÔʹÓà mock ´úÌæËüÃÇ·½±ã²âÊÔ¡£

ÔÚÑó´Ð¼Ü¹¹ÖУ¬Ã÷È·¹æ¶¨ÁËÒÀÀµµÄ·½Ïò£º
Íâ²ãÒÀÀµÄÚ²ã
ÄÚ²ã¶ÔÍâ²ãÎÞ¸ÐÖª
COLA Ó¦Óüܹ¹
COLA ¼Ü¹¹ÊÇÎÒÍŶÓ×ÔÖ÷Ñз¢µÄÓ¦Óüܹ¹£¬Ä¿Ç°ÒѾ¿ªÔ´¡£ÔÚ COLA µÄÉè¼ÆÖУ¬ÎÒÃdzä·Ö¼³È¡Á˾µä¼Ü¹¹µÄÓÅÐã˼Ïë¡£³ý´ËÖ®Í⣬ÎÒÃDz¹³äÁ˹淶Éè¼ÆºÍÀ©Õ¹Éè¼Æ£¬²¢ÇÒʹÓÃ
Archetype µÄ·½Ê½£¬½«¼Ü¹¹¹Ì»¯ÏÂÀ´£¬ÒÔ±ã¿ÉÒÔ¿ìËÙµÄÔÚ¿ª·¢ÖÐʹÓá£
COLA ¿ªÔ´µØÖ·£ºhttps://github.com/alibaba/COLA
1. ·Ö²ãÉè¼Æ
COLA µÄ·Ö²ãÊÇÒ»ÖÖ¸ÄÁ¼Á˵ÄÈý²ã¼Ü¹¹¡£Ö÷ÒªÊǽ«´«Í³µÄÒµÎñÂß¼²ã²ð·Ö³ÉÓ¦Óò㡢ÁìÓò²ãºÍ»ù´¡ÊµÊ©²ã¡£ÈçÏÂͼËùʾ£¬×ó±ßÊÇ´«Í³µÄ·Ö²ã¼Ü¹¹£¬ÓÒ±ßÊÇ
COLA µÄ·Ö²ã¼Ü¹¹¡£

Æäÿһ²ãµÄ×÷Ó÷¶Î§ºÍº¬ÒåÈçÏ£º
1£©Õ¹Ïֲ㣨Presentation Layer£©
¸ºÔðÒÔ Rest µÄ¸ñʽ½ÓÊÜ Web ÇëÇó£¬È»ºó½«ÇëÇó·Óɸø Application ²ãÖ´ÐУ¬²¢·µ»ØÊÓͼģÐÍ£¨View
Model£©£¬ÆäÔØÌåͨ³£ÊÇ DTO£¨Data Transfer Object£©¡£
2£©Ó¦Óò㣨Application Layer£©
Ö÷Òª¸ºÔð»ñÈ¡ÊäÈ룬×é×°ÉÏÏÂÎÄ£¬×öÊäÈëУÑ飬µ÷ÓÃÁìÓò²ã×öÒµÎñ´¦Àí£¬Èç¹ûÐèÒªµÄ»°£¬·¢ËÍÏûϢ֪ͨ¡£µ±È»£¬²ã´ÎÊÇ¿ª·ÅµÄ£¬ÈôÓÐÐèÒª£¬Ó¦ÓòãÒ²¿ÉÒÔÖ±½Ó·ÃÎÊ»ù´¡ÊµÊ©²ã¡£
3£©ÁìÓò²ã£¨Domain Layer£©
Ö÷ÒªÊÇ·â×°Á˺ËÐÄÒµÎñÂß¼£¬²¢Í¨¹ýÁìÓò·þÎñ£¨Domain Service£©ºÍÁìÓò¶ÔÏó£¨Entities£©µÄº¯Êý¶ÔÍⲿÌṩҵÎñÂß¼µÄ¼ÆËãºÍ´¦Àí.
4£©»ù´¡ÊµÊ©²ã£¨Infrastructure Layer£©
Ö÷Òª°üº¬ Tunnel£¨Êý¾ÝͨµÀ£©¡¢Config ºÍ Common¡£ÕâÀïÎÒÃÇʹÓà Tunnel ¸ÅÄîÀ´¶ÔËùÓеÄÊý¾ÝÀ´Ô´½øÐгéÏó£¬ÕâЩÊý¾ÝÀ´Ô´¿ÉÒÔÊÇÊý¾Ý¿â£¨MySQL£¬NoSql£©¡¢ËÑË÷ÒýÇæ¡¢Îļþϵͳ¡¢Ò²¿ÉÒÔÊÇ
SOA ·þÎñµÈ£»Config ¸ºÔðÓ¦ÓõÄÅäÖã»Common ÊÇͨÓõŤ¾ßÀà¡£
2. À©Õ¹Éè¼Æ
¶ÔÓÚÖ»ÓÐÒ»¸öÒµÎñµÄ¼òµ¥³¡¾°£¬¶ÔÀ©Õ¹ÐÔµÄÒªÇó²¢²»Í»³ö£¬ÕâÒ²ÊÇΪʲôÀ©Õ¹Éè¼Æ³£±»ºöÂÔµÄÔÒò£¬ÒòΪÎÒÃǴ󲿷ֵÄϵͳ¶¼ÊÇ´Óµ¥Ò»ÒµÎñ¿ªÊ¼µÄ¡£µ«ÊÇËæ×ÅÒµÎñ³¡¾°Ô½À´Ô½¸´ÔÓ£¬´úÂëÀïÃæ¿ªÊ¼³öÏÖ´óÁ¿µÄ
if-else Âß¼¡£´Ëʱ³ýÁ˳£¹æµÄ²ßÂÔģʽÒÔÍ⣬ÎÒÃÇ¿ÉÒÔ¿¼ÂÇÔڼܹ¹²ãÃæÌṩͳһµÄÀ©Õ¹½â¾ö·½°¸¡£
ÔÚÀ©Õ¹Éè¼ÆÖУ¬ÎÒÃÇÌáÁ¶³öÁ½¸öÖØÒªµÄ¸ÅÄһ¸öÊÇÒµÎñÉí·Ý£¬ÁíÒ»¸öÊÇÀ©Õ¹µã¡£
ÿ¸öÒµÎñ»òÕß³¡¾°¶¼¿ÉÒÔʵÏÖÒ»¸ö»ò¶à¸öÀ©Õ¹µã£¨ExtensionPoint£©£¬Ò²¾ÍÊÇ˵һ¸öÒµÎñÉí·Ý¼ÓÉÏÒ»¸öÀ©Õ¹µã£¬¿ÉÒÔΨһµØÈ·¶¨Ò»¸öÀ©Õ¹ÊµÏÖ£¨Extension£©¡£¶øÕâ¸öÒµÎñÉí·ÝºÍÀ©Õ¹µãµÄ×éºÏ£¬ÎÒÃǽ«Æä³ÆÖ®ÎªÀ©Õ¹×ø±ê£¨ExtensionCoordinate£©£¬ÈçÏÂͼËùʾ¡£

ÕâÑù£¬Í¨¹ýÒµÎñÉí·Ý+À©Õ¹µã£¬ÎÒÃǾͿÉÒÔ´Ó¿ò¼Ü²ãÃæÊµÏÖ¶Ô²»Í¬×â»§£¬²»Í¬ÒµÎñ£¬²»Í¬³¡¾°µÄÀ©Õ¹¶¨ÖÆÁË¡£Õû¸ö°¢ÀïÒµÎñÖÐ̨ÕýÊÇ»ùÓÚÕâ¸ö˼Ï룬ʵÏֵĶàÒµÎñÖ§³ÅµÄ¡£
3. ¹æ·¶Éè¼Æ
ÈκÎÊÂÎï¶¼ÊǹæÔòÐÔºÍËæ»úÐÔµÄ×éºÏ¡£¹æ·¶µÄÒâÒå¾ÍÔÚÓÚÎÒÃÇ¿ÉÒÔ½«¹æÔòÐԵĶ«Î÷¹Ì»¯ÏÂÀ´£¬¾¡Á¿¼õÉÙËæÐÄËùÓû´øÀ´µÄ¸´ÔÓ¶È£¬Ò»ÖÂÐÔ¿ÉÒÔ½µµÍϵͳ¸´ÔÓ¶È¡£´ÓÃüÃûµ½¼Ü¹¹½ÔÊÇÈç´Ë£¬¶ø¼Ü¹¹±¾Éí¾ÍÊÇÒ»Öֹ淶ºÍÔ¼Êø£¬ÆÆ»µÕâ¸öÔ¼Êø£¬Ò²¾ÍÆÆ»µÁ˼ܹ¹¡£
COLA ÖÆ¶¨ÁËһЩÁеĹ淶£º°üÀ¨×é¼þ£¨Module£©½á¹¹¡¢°ü£¨Package£©½á¹¹¡¢ÃüÃûµÈ¡£
±ÈÈç¶ÔÓÚ×é¼þ£¬ÎÒÃÇÒªÇóʹÓà COLA µÄÓ¦Óö¼Ó¦¸Ã×ñÑÈçÏÂͼËùʾµÄ×é¼þ»®·Ö£º

4. COLA ¼Ü¹¹×ÜÀÀ
Ôڼܹ¹Ë¼ÏëÉÏ£¬COLA Ö÷ÕÅÏñÁù±ßÐμܹ¹ÄÇÑù£¬Ê¹Óö˿Ú-ÊÊÅäÆ÷È¥½âñî¼¼Êõϸ½Ú£»Ö÷ÕÅÏñÑó´ÐȦ¼Ü¹¹ÄÇÑù£¬ÒÔÁìÓòΪºËÐÄ£¬²¢Í¨¹ýÒÀÀµµ¹Ö÷´×ªÁìÓò²ãµÄÒÀÀµ·½Ïò¡£×îÖÕÐγÉÈçÏÂͼËùʾµÄ×é¼þ¹ØÏµ¡£

»»Ò»¸öÊӽǣ¬´Ó COLA Ó¦Óô¦ÀíÏìÓ¦Ò»¸öÇëÇóµÄ¹ý³ÌÀ´¿´¡£COLA ʹÓÃÁË CQRS À´·ÖÀëÃüÁîºÍ²éѯµÄÖ°Ôð£¬Ê¹ÓÃÀ©Õ¹µãºÍÔªÊý¾ÝÀ´ÌáÉýÓ¦ÓõÄÀ©Õ¹ÐÔ¡£Õû¸ö´¦ÀíÁ÷³ÌÈçÏÂͼËùʾ£º

Ó¦Óüܹ¹µÄºËÐÄ
×ݹÛÉÏÃæ½éÉܵÄËùÓÐÓ¦Óüܹ¹£¬ÎÒÃÇ¿ÉÒÔ·¢ÏÖÒ»¸ö¹²Í¬µã£¬¾ÍÊÇ¡°ºËÐÄÒµÎñÂß¼ºÍ¼¼Êõϸ½Ú·ÖÀ롱¡£

Êǵģ¬Áù±ßÐμܹ¹¡¢Ñó´ÐȦ¼Ü¹¹¡¢ÒÔ¼° COLA ¼Ü¹¹µÄºËÐÄÖ°Ôð¾ÍÊÇÒª×öºËÐÄÒµÎñÂß¼ºÍ¼¼Êõϸ½ÚµÄ·ÖÀëºÍ½âñî¡£
ÊÔÏëһϣ¬ÒµÎñÂß¼ºÍ¼¼Êõϸ½ÚôÛÔÓÔÚÒ»ÆðµÄÇé¿ö£¬ËùÓеĴúÂ붼дÔÚ ServiceImpl ÀïÃæ£¬Ç°¼¸ÐдúÂëÊÇ×ö
validation µÄÊ£¬½ÓÏÂÀ´¼¸ÐÐÊÇ×ö convert µÄÊ£¬È»ºóÊǼ¸ÐÐÒµÎñ´¦ÀíÂß¼µÄ´úÂ룬´©²å×Å£¬ÎÒÃÇÐèҪͨ¹ý
RPC »òÕß DAO »ñÈ¡¸ü¶àµÄÊý¾Ý£¬Äõ½Êý¾Ýºó£¬ÓÖÊǼ¸ÐÐ convert µÄ´úÂ룬ÔÚ½ÓÉÏÒ»¶ÎÒµÎñÂß¼´úÂ룬Ȼºó»¹ÒªÂä¿â£¬·¢ÏûÏ¢.....µÈµÈ¡£
ÔÙ¼òµ¥µÄÒµÎñ£¬°´ÕÕÉÏÃæÕâÖÖд´úÂëµÄ·½Ê½£¬¶¼»á±äµÃ¸´ÔÓ£¬ÄÑά»¤¡£
Òò´Ë£¬ÎÒÈÏΪӦÓüܹ¹µÄºËÐÄʹÃü¾ÍÊÇÒª·ÖÀëÒµÎñÂß¼ºÍ¼¼Êõϸ½Ú¡£ÈúËÐÄÒµÎñÂß¼¿ÉÒÔ·´Ó³ÁìÓòÄ£ÐͺÍÁìÓòÓ¦Ó㬿ÉÒÔ¸´Ó㬿ÉÒÔºÜÈÝÒ×±»¿´¶®¡£Èü¼Êõϸ½ÚÔÚ¸¨ÖúʵÏÖÒµÎñ¹¦ÄܵÄͬʱ£¬¿ÉÒÔ±»Ìæ»»¡£
×îºóÎÒÃÇ·¢ÏÖ£¬Ó¦Óüܹ¹µÄµÀ¾ÍÊÇ£ºÈÃÉϵ۵ĹéÉϵۣ¬¿ÈöµÄ¹é¿Èö¡£ |