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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
ÁìÓòÇý¶¯Éè¼Æ£¨DDD£©£º·Ö²ã¼Ü¹¹µÄÈýÖÖģʽ
 
  4368  次浏览      27
 2021-8-16
 
±à¼­ÍƼö:
±¾ÎÄÖ÷Òª½éÉÜDDDºÍ·Ö²ã¼Ü¹¹µÄÏà¹ØÖªÊ¶£¬È»ºó½«DDD·Ö²ã¼Ü¹¹Öг£ÓõÄÈýÖÖģʽ£¨ËIJã¼Ü¹¹¡¢Îå²ã¼Ü¹¹ºÍÁù±ßÐμܹ¹£©½áºÏʵ¼ù¾­Ñé·Ö±ð½øÐÐÏêϸ²ûÊöµÈÏà¹ØÄÚÈÝ¡£
±¾ÎÄÀ´×Լܹ¹Ê¦£¬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼­¡¢ÍƼö¡£

ÒýÑÔ

ÔÚÌÖÂÛDDD·Ö²ã¼Ü¹¹µÄģʽ֮ǰ£¬ÎÒÃÇÏÈÒ»Æð»Ø¹ËÒ»ÏÂDDDºÍ·Ö²ã¼Ü¹¹µÄÏà¹ØÖªÊ¶¡£

DDD

DDD£¨Domain Driven Design£¬ÁìÓòÇý¶¯Éè¼Æ£©×÷ΪһÖÖÈí¼þ¿ª·¢·½·¨£¬Ëü¿ÉÒÔ°ïÖúÎÒÃÇÉè¼Æ¸ßÖÊÁ¿µÄÈí¼þÄ£ÐÍ¡£ÔÚÕýȷʵÏÖµÄÇé¿öÏ£¬ÎÒÃÇͨ¹ýDDDÍê³ÉµÄÉè¼ÆÇ¡Ç¡¾ÍÊÇÈí¼þµÄ¹¤×÷·½Ê½¡£

UL£¨Ubiquitous Language£¬Í¨ÓÃÓïÑÔ£©ÊÇÍŶӹ²ÏíµÄÓïÑÔ£¬ÊÇDDDÖÐ×î¾ßÍþÁ¦µÄÌØÐÔÖ®Ò»¡£²»¹ÜÄãÔÚÍŶÓÖеĽÇÉ«ÈçºÎ£¬Ö»ÒªÄãÊÇÍŶӵÄÒ»Ô±£¬Äã¶¼½«Ê¹ÓÃUL¡£ÓÉÓÚULµÄÖØÒªÐÔ£¬ËùÒÔÐèÒªÈÃÿ¸ö¸ÅÄîÔÚ¸÷×ÔµÄÉÏÏÂÎÄÖÐÊÇÇåÎúÎÞÆçÒåµÄ£¬ÓÚÊÇDDDÔÚÕ½ÂÔÉè¼ÆÉÏÌá³öÁËģʽBC£¨Bounded Context£¬ÏÞ½çÉÏÏÂÎÄ£©¡£ULºÍBCͬʱ¹¹³ÉÁËDDDµÄÁ½´óÖ§Öù£¬²¢ÇÒËüÃÇÊÇÏศÏà³ÉµÄ£¬¼´UL¶¼ÓÐÆäÈ·¶¨µÄÉÏÏÂÎĺ¬Ò壬¶øBCÖеÄÿ¸ö¸ÅÄî¶¼ÓÐΨһµÄº¬Òå¡£

Ò»¸öÒµÎñÁìÓò»®·Ö³ÉÈô¸É¸öBC£¬ËüÃÇÖ®¼äͨ¹ýContext Map½øÐм¯³É¡£BCÊÇÒ»¸öÏÔʽµÄ±ß½ç£¬ÁìÓòÄ£ÐÍ±ã´æÔÚÓÚÕâ¸ö±ß½çÖ®ÄÚ¡£ÁìÓòÄ£ÐÍÊǹØÓÚij¸öÌØ¶¨ÒµÎñÁìÓòµÄÈí¼þÄ£ÐÍ¡£Í¨³££¬ÁìÓòÄ£ÐÍͨ¹ý¶ÔÏóÄ£ÐÍÀ´ÊµÏÖ£¬ÕâЩ¶ÔÏóͬʱ°üº¬ÁËÊý¾ÝºÍÐÐΪ£¬²¢ÇÒ±í´ïÁË׼ȷµÄÒµÎñº¬Òå¡£

´Ó¹ãÒåÉÏÀ´½²£¬ÁìÓò¼´ÊÇÒ»¸ö×éÖ¯Ëù×öµÄÊÂÇéÒÔ¼°ÆäÖÐËù°üº¬µÄÒ»ÇУ¬±íʾÕû¸öÒµÎñϵͳ¡£ÓÉÓÚ¡°ÁìÓòÄ£ÐÍ¡±°üº¬ÁË¡°ÁìÓò¡±Õâ¸ö´Ê£¬ÎÒÃÇ¿ÉÄÜ»áÈÏΪӦ¸ÃΪÕû¸öÒµÎñϵͳ´´½¨Ò»¸öµ¥Ò»µÄ¡¢Äھ۵ĺÍÈ«¹¦ÄÜʽµÄÄ£ÐÍ¡£È»¶ø£¬Õâ²¢²»ÊÇÎÒÃÇʹÓÃDDDµÄÄ¿±ê¡£ÕýºÃÏà·´£¬ÁìÓòÄ£ÐÍ´æÔÚÓÚBCÄÚ¡£

ÔÚ΢·þÎñ¼Ü¹¹Êµ¼ùÖУ¬ÈËÃÇ´óÁ¿µØÊ¹ÓÃÁËDDDÖеĸÅÄîºÍ¼¼Êõ£º

1.΢·þÎñÖÐÓ¦¸ÃÊ×ÏȽ¨Á¢UL£¬È»ºóÔÙÌÖÂÛÁìÓòÄ£ÐÍ¡£

2.Ò»¸ö΢·þÎñ×î´ó²»Òª³¬¹ýÒ»¸öBC£¬·ñÔò΢·þÎñÄÚ»á´æÔÚÓÐÆçÒåµÄÁìÓò¸ÅÄî¡£

3.Ò»¸ö΢·þÎñ×îС²»ÒªÐ¡ÓÚÒ»¸ö¾ÛºÏ£¬·ñÔò»áÒýÈë·Ö²¼Ê½ÊÂÎñµÄ¸´ÔÓ¶È¡£

4.΢·þÎñµÄ»®·Ö¹ý³ÌÀàËÆÓÚBCµÄ»®·Ö¹ý³Ì£¬Ã¿¸ö΢·þÎñ¶¼ÓÐÒ»¸öÁìÓòÄ£ÐÍ¡£

5.΢·þÎñ¼äµÄ¼¯³É¿ÉÒÔͨ¹ýContext MapÀ´Íê³É£¬±ÈÈçACL£¨Anticorruption Layer£¬·À¸¯²ã£©¡£

6.΢·þÎñ¼ä×îºÃ²ÉÓÃDomain Event£¨ÁìÓòʼþ£©À´½øÐн»»¥£¬Ê¹µÃ΢·þÎñ¿ÉÒÔ±£³ÖËÉñîºÏ¡£

·Ö²ã¼Ü¹¹

·Ö²ã¼Ü¹¹µÄºÃ´¦ÊÇÏÔ¶øÒ×¼ûµÄ¡£Ê×ÏÈ£¬ÓÉÓÚ²ã¼äËÉÉ¢µÄñîºÏ¹ØÏµ£¬Ê¹µÃÎÒÃÇ¿ÉÒÔרעÓÚ±¾²ãµÄÉè¼Æ£¬¶ø²»±Ø¹ØÐÄÆäËû²ãµÄÉè¼Æ£¬Ò²²»±Øµ£ÐÄ×Ô¼ºµÄÉè¼Æ»áÓ°ÏìÆäËü²ã£¬¶ÔÌá¸ßÈí¼þÖÊÁ¿´óÓÐñÔÒæ¡£Æä´Î£¬·Ö²ã¼Ü¹¹Ê¹µÃ³ÌÐò½á¹¹ÇåÎú£¬Éý¼¶ºÍά»¤¶¼±äµÃÊ®·ÖÈÝÒ×£¬¸ü¸Äij²ãµÄ¾ßÌåʵÏÖ´úÂ룬ֻҪ±¾²ãµÄ½Ó¿Ú±£³ÖÎȶ¨£¬ÆäËû²ã¿ÉÒÔ²»±ØÐ޸ġ£¼´Ê¹±¾²ãµÄ½Ó¿Ú·¢Éú±ä»¯£¬Ò²Ö»Ó°ÏìÏàÁÚµÄÉϲ㣬Ð޸Ť×÷Á¿Ð¡ÇÒ´íÎó¿ÉÒÔ¿ØÖÆ£¬²»»á´øÀ´ÒâÍâµÄ·çÏÕ¡£

Òª±£³Ö³ÌÐò·Ö²ã¼Ü¹¹µÄÓŵ㣬¾Í±ØÐë¼á³Ö²ã¼äµÄËÉÉ¢ñîºÏ¹ØÏµ¡£Éè¼Æ³ÌÐòʱ£¬Ó¦ÏÈ»®·Ö³ö¿ÉÄܵIJã´Î£¬ÒÔ¼°´Ë²ã´ÎÌṩµÄ½Ó¿ÚºÍÐèÒªµÄ½Ó¿Ú¡£Éè¼ÆÄ³²ãʱ£¬Ó¦¾¡Á¿±£³Ö²ã¼äµÄ¸ôÀ룬½öʹÓÃϲãÌṩµÄ½Ó¿Ú¡£

¹ØÓÚ·Ö²ã¼Ü¹¹µÄÓŵ㣬Martin FowlerÔÚ¡¶Patterns of Enterprise Application Architecture¡·Ò»ÊéÖиø³öÁ˴𰸣º

1.¿ª·¢ÈËÔ±¿ÉÒÔÖ»¹Ø×¢Õû¸ö½á¹¹ÖеÄijһ²ã¡£

2.¿ÉÒÔºÜÈÝÒ×µÄÓÃеÄʵÏÖÀ´Ìæ»»Ô­Óвã´ÎµÄʵÏÖ¡£

3.¿ÉÒÔ½µµÍ²ãÓë²ãÖ®¼äµÄÒÀÀµ¡£

4.ÓÐÀûÓÚ±ê×¼»¯¡£

5.ÀûÓÚ¸÷²ãÂß¼­µÄ¸´Óá£

¡°½ðÎÞ×ã³à£¬ÈËÎÞÍêÈË¡±£¬·Ö²ã¼Ü¹¹Ò²²»¿É±ÜÃâ¾ßÓÐһЩȱÏÝ£º

1.½µµÍÁËϵͳµÄÐÔÄÜ¡£ÕâÊÇÏÔÈ»µÄ£¬ÒòΪÔö¼ÓÁËÖмä²ã£¬²»¹ý¿ÉÒÔͨ¹ý»º´æ»úÖÆÀ´¸ÄÉÆ¡£

2.¿ÉÄܻᵼÖ¼¶ÁªµÄÐ޸ġ£ÕâÖÖÐÞ¸ÄÓÈÆäÌåÏÖÔÚ×ÔÉ϶øÏµķ½Ïò£¬²»¹ý¿ÉÒÔͨ¹ýÒÀÀµµ¹ÖÃÀ´¸ÄÉÆ¡£

ÔÚÿ¸öBCÖÐΪÁË͹ÏÔÁìÓòÄ£ÐÍ£¬DDDÖÐÌá³öÁË·Ö²ã¼Ü¹¹Ä£Ê½¡£×î½ü¼¸Ä꣬±ÊÕßÔÚʵ¼ùDDDµÄ¹ý³ÌÖУ¬Ò²¾­³£Ê¹Ó÷ֲã¼Ü¹¹Ä£Ê½£¬±¾ÎÄÖ÷Òª·ÖÏíDDD·Ö²ã¼Ü¹¹ÖбȽϾ­µäµÄÈýÖÖģʽ¡£

ģʽһ£ºËIJã¼Ü¹¹

Eric EvansÔÚ¡¶ÁìÓòÇý¶¯Éè¼Æ£­Èí¼þºËÐĸ´ÔÓÐÔÓ¦¶ÔÖ®µÀ¡·Õâ±¾ÊéÖÐÌá³öÁË´«Í³µÄËIJã¼Ü¹¹Ä£Ê½£¬ÈçÏÂͼËùʾ£º

1.User InterfaceΪÓû§½çÃæ²ã£¨»ò±íʾ²ã£©£¬¸ºÔðÏòÓû§ÏÔʾÐÅÏ¢ºÍ½âÊÍÓû§ÃüÁî¡£ÕâÀïÖ¸µÄÓû§¿ÉÒÔÊÇÁíÒ»¸ö¼ÆËã»úϵͳ£¬²»Ò»¶¨ÊÇʹÓÃÓû§½çÃæµÄÈË¡£

2.ApplicationΪӦÓò㣬¶¨ÒåÈí¼þÒªÍê³ÉµÄÈÎÎñ£¬²¢ÇÒÖ¸»Ó±í´ïÁìÓò¸ÅÄîµÄ¶ÔÏóÀ´½â¾öÎÊÌâ¡£ÕâÒ»²ãËù¸ºÔðµÄ¹¤×÷¶ÔÒµÎñÀ´ËµÒâÒåÖØ´ó£¬Ò²ÊÇÓëÆäËüϵͳµÄÓ¦ÓÃ²ã½øÐн»»¥µÄ±ØÒªÇþµÀ¡£Ó¦ÓòãÒª¾¡Á¿¼òµ¥£¬²»°üº¬ÒµÎñ¹æÔò»òÕß֪ʶ£¬¶øÖ»ÎªÏÂÒ»²ãÖеÄÁìÓò¶ÔÏóЭµ÷ÈÎÎñ£¬·ÖÅ乤×÷£¬Ê¹ËüÃÇ»¥ÏàЭ×÷¡£ËüûÓз´Ó³ÒµÎñÇé¿öµÄ״̬£¬µ«ÊÇÈ´¿ÉÒÔ¾ßÓÐÁíÍâÒ»ÖÖ״̬£¬ÎªÓû§»ò³ÌÐòÏÔʾij¸öÈÎÎñµÄ½ø¶È¡£

3.DomainΪÁìÓò²ã£¨»òÄ£ÐͲ㣩£¬¸ºÔð±í´ïÒµÎñ¸ÅÄҵÎñ״̬ÐÅÏ¢ÒÔ¼°ÒµÎñ¹æÔò¡£¾¡¹Ü±£´æÒµÎñ״̬µÄ¼¼Êõϸ½ÚÊÇÓÉ»ù´¡ÉèÊ©²ãʵÏֵ쬵«ÊÇ·´Ó³ÒµÎñÇé¿öµÄ״̬ÊÇÓɱ¾²ã¿ØÖƲ¢ÇÒʹÓõġ£ÁìÓò²ãÊÇÒµÎñÈí¼þµÄºËÐÄ£¬ÁìÓòÄ£ÐÍλÓÚÕâÒ»²ã¡£

4.Infrastructure²ãΪ»ù´¡ÊµÊ©²ã£¬ÏòÆäËû²ãÌṩͨÓõļ¼ÊõÄÜÁ¦£ºÎªÓ¦Óò㴫µÝÏûÏ¢£¬ÎªÁìÓò²ãÌṩ³Ö¾Ã»¯»úÖÆ£¬ÎªÓû§½çÃæ²ã»æÖÆÆÁÄ»×é¼þ£¬µÈµÈ¡£»ù´¡ÉèÊ©²ã»¹Äܹ»Í¨¹ý¼Ü¹¹¿ò¼ÜÀ´Ö§³ÖËĸö²ã´Î¼äµÄ½»»¥Ä£Ê½¡£

´«Í³µÄËIJã¼Ü¹¹¶¼ÊÇÏÞ¶¨ÐÍËÉÉ¢·Ö²ã¼Ü¹¹£¬¼´Infrastructure²ãµÄÈÎÒâÉϲ㶼¿ÉÒÔ·ÃÎʸò㣨¡°L¡±ÐÍ£©£¬¶øÆäËü²ã×ñÊØÑϸñ·Ö²ã¼Ü¹¹¡£

±ÊÕßÔÚËIJã¼Ü¹¹Ä£Ê½µÄʵ¼ùÖУ¬¶ÔÓÚ·Ö²ãµÄ±¾µØ»¯¶¨ÒåÖ÷ҪΪ£º

1.User Interface²ãÖ÷ÒªÊÇRestfulÏûÏ¢´¦Àí£¬ÅäÖÃÎļþ½âÎö£¬µÈµÈ¡£

2.Application²ãÖ÷ÒªÊÇ¶à½ø³Ì¹ÜÀí¼°µ÷¶È£¬¶àÏ̹߳ÜÀí¼°µ÷¶È£¬¶àЭ³Ìµ÷¶ÈºÍ״̬»ú¹ÜÀí£¬µÈµÈ¡£

3.Domain²ãÖ÷ÒªÊÇÁìÓòÄ£Ð͵ÄʵÏÖ£¬°üÀ¨ÁìÓò¶ÔÏóµÄÈ·Á¢£¬ÕâЩ¶ÔÏóµÄÉúÃüÖÜÆÚ¹ÜÀí¼°¹ØÏµ£¬ÁìÓò·þÎñµÄ¶¨Ò壬ÁìÓòʼþµÄ·¢²¼£¬µÈµÈ¡£

4.Infrastructure²ãÖ÷ÒªÊÇÒµÎñƽ̨£¬±à³Ì¿ò¼Ü£¬µÚÈý·½¿âµÄ·â×°£¬»ù´¡Ëã·¨£¬µÈµÈ¡£

˵Ã÷£ºÑϸñÒâÒåÉÏÀ´Ëµ£¬User InterfaceÖ¸µÄÊÇÓû§½çÃæ£¬RestfulÏûÏ¢ºÍÅäÖÃÎļþ½âÎöµÈ´¦ÀíÓ¦¸Ã·ÅÔÚApplication²ã£¬User Interface²ãûÓеϰ¾Í¿Õȱ¡£µ«User InterfaceÒ²¿ÉÒÔÀí½âΪÓû§½Ó¿Ú£¬ËùÒÔ½«RestfulÏûÏ¢ºÍÅäÖÃÎļþ½âÎöµÈ´¦Àí·ÅÔÚUser Interface²ãÒ²ÐС£

ģʽ¶þ£ºÎå²ã¼Ü¹¹

James O. CoplienºÍTrygve ReenskaugÔÚ2009Äê·¢±íÁËһƪÂÛÎÄ¡¶DCI¼Ü¹¹£ºÃæÏò¶ÔÏó±à³ÌµÄй¹Ïë¡·£¬±êÖ¾×ÅDCI¼Ü¹¹Ä£Ê½µÄµ®Éú¡£ÓÐȤµÄÊÇJames O. CoplienÒ²ÊÇMVC¼Ü¹¹Ä£Ê½µÄ´´ÔìÕߣ¬Õâ¸ö´óÊåÒ»±²×Ӿ͸ÉÁËÁ½¼þÊ£¬¼´ÄêÇáʱ´´ÔìÁËMVCºÍÄêÀÏʱ´´ÔìÁËDCI£¬ÆäËûʱ¼ä¶¼ÔÚ˼¿¼£¬ÈÃÎÒ±²Íû³¾Äª¼°¡£

ÃæÏò¶ÔÏó±à³ÌµÄ±¾ÒâÊǽ«³ÌÐòÔ±ÓëÓû§µÄÊÓ½ÇͳһÓÚ¼ÆËã»ú´úÂëÖ®ÖУº¶ÔÌá¸ß¿ÉÓÃÐԺͽµµÍ³ÌÐòµÄÀí½âÄѶÈÀ´Ëµ£¬¶¼ÊÇÒ»ÖÖ¶÷´Í¡£¿ÉÊÇËäÈ»¶ÔÏóºÜºÃµØ·´Ó³Á˽ṹ£¬µ«ÔÚ·´Ó³ÏµÍ³µÄ¶¯×÷·½ÃæÈ´Ê§°ÜÁË£¬DCIµÄ¹¹ÏëÊÇÆÚÍû·´Ó³³ö×îÖÕÓû§µÄÈÏ֪ģÐÍÖеĽÇÉ«ÒÔ¼°½Çɫ֮¼äµÄ½»»¥¡£

´«Í³ÉÏ£¬ÃæÏò¶ÔÏó±à³ÌÓïÑÔÄò»³ö°ì·¨È¥²¶×½¶ÔÏóÖ®¼äµÄЭ×÷£¬·´Ó³²»ÁËЭ×÷ÖÐÍùÀ´µÄËã·¨¡£¾ÍÏñ¶ÔÏóµÄʵÀý·´Ó³³öÁìÓò½á¹¹Ò»Ñù£¬¶ÔÏóµÄЭ×÷Óë½»»¥Í¬ÑùÊÇÓнṹµÄ¡£Ð­×÷Óë½»»¥Ò²ÊÇ×îÖÕÓû§ÐÄÖÇÄ£Ð͵Ä×é³É²¿·Ö£¬µ«ÄãÔÚ´úÂëÖÐÕÒ²»µ½Ò»¸öÄھ۵ıíÏÖÐÎʽȥ´ú±íËüÃÇ¡£ÔÚ±¾ÖÊÉÏ£¬½ÇÉ«ÌåÏÖµÄÊÇÒ»°ã»¯µÄ¡¢³éÏóµÄËã·¨¡£½ÇɫûÓÐѪÈ⣬²¢²»ÄÜ×öʵ¼ÊµÄÊÂÇ飬¹é¸ù½áµ×¹¤×÷»¹ÊÇÂäÔÚ¶ÔÏóµÄÍ·ÉÏ£¬¶ø¶ÔÏó±¾Éí»¹µ£¸º×ÅÌåÏÖÁìÓòÄ£Ð͵ÄÔðÈΡ£

ÈËÃÇÐÄÄ¿Öжԡ°¶ÔÏó¡±Õâ¸öͳһµÄÕûÌåÈ´ÓÐÁ½ÖÖ²»Í¬µÄÄ£ÐÍ£¬¼´¡°ÏµÍ³ÊÇʲô¡±ºÍ¡°ÏµÍ³×öʲô¡±£¬Õâ¾ÍÊÇDCIÒª½â¾öµÄ¸ù±¾ÎÊÌâ¡£Óû§ÈÏÖªÒ»¸ö¸ö¶ÔÏóºÍËüÃÇËù´ú±íµÄÁìÓò£¬¶øÃ¿¸ö¶ÔÏó»¹±ØÐë°´ÕÕÓû§ÐÄÄ¿ÖеĽ»»¥Ä£ÐÍȥʵÏÖһЩÐÐΪ£¬Í¨¹ýËüÔÚÓÃÀýÖÐËù°çÑݵĽÇÉ«ÓëÆäËû¶ÔÏóÁª½áÔÚÒ»Æð¡£ÕýÒòΪ×îÖÕÓû§ÄܰÑÁ½ÖÖÊӽǺÏΪһÌ壬ÀàµÄ¶ÔÏó³ýÁËÖ§³ÖËùÊôÀàµÄ³ÉÔ±º¯Êý£¬»¹¿ÉÒÔÖ´ÐÐËù°çÑݽÇÉ«µÄ³ÉÔ±º¯Êý£¬¾ÍºÃÏñÄÇЩº¯ÊýÊôÓÚ¶ÔÏó±¾ÉíÒ»Ñù¡£»»¾ä»°Ëµ£¬ÎÒÃÇÏ£Íû°Ñ½ÇÉ«µÄÂß¼­×¢Èëµ½¶ÔÏó£¬ÈÃÕâЩÂß¼­³ÉΪ¶ÔÏóµÄÒ»²¿·Ö£¬¶øÆäµØÎ»È´Ë¿ºÁ²»ÈõÓÚ¶ÔÏó³õʼ»¯Ê±´ÓÀàËùµÃµ½µÄ·½·¨¡£ÎÒÃÇÔÚ±àÒëʱ¾ÍΪ¶ÔÏó°²ÅźÃÁ˰çÑݽÇɫʱ¿ÉÄÜÐèÒªµÄËùÓÐÂß¼­¡£Èç¹ûÎÒÃÇÔÙ´ÏÃ÷Ò»µã£¬ÔÚÔËÐÐʱ²ÅÖªµÀÁ˱»·ÖÅäµÄ½ÇÉ«£¬È»ºó×¢Èë¸ÕºÃÒªÓõ½µÄÂß¼­£¬Ò²ÊÇ¿ÉÒÔ×öµ½µÄ¡£

Ëã·¨¼°½ÇÉ«-¶ÔÏóÓ³ÉäÓÉContextÓµÓС£Context¡°ÖªµÀ¡±ÔÚµ±Ç°ÓÃÀýÖÐÓ¦¸ÃÕÒÄĸö¶ÔÏóÈ¥³äµ±Êµ¼ÊµÄÑÝÔ±£¬È»ºó¸ºÔð°Ñ¶ÔÏó¡°cast¡±³É³¡¾°ÖеÄÏàÓ¦½ÇÉ«£¨cast Õâ¸ö´ÊÔÚÏ·¾ç½çÊÇÑ¡½ÇµÄÒâ˼£¬´Ë´¦µÄÓôÊÖÁÉÙ·ûºÏ¸Ã´ÊÒ壬ÁíÒ»·½ÃæµÄÓÃÒâÊÇÁªÏëµ½cast ÔÚijЩ±à³ÌÓïÑÔÀàÐÍϵͳÖеĺ¬Ò壩¡£ÔÚµäÐ͵ÄʵÏÖÀÿ¸öÓÃÀý¶¼ÓÐÆä¶ÔÓ¦µÄÒ»¸öContext ¶ÔÏ󣬶øÓÃÀýÉæ¼°µ½µÄÿ¸ö½ÇÉ«ÔÚ¶ÔÓ¦µÄContext ÀïÒ²¶¼ÓÐÒ»¸ö±êʶ·û¡£Context Òª×öµÄÖ»Êǽ«½ÇÉ«±êʶ·ûÓëÕýÈ·µÄ¶ÔÏó°ó¶¨µ½Ò»Æð¡£È»ºóÎÒÃÇÖ»Òª´¥·¢ContextÀïµÄ¡°¿ª³¡¡±½ÇÉ«£¬´úÂë¾Í»áÔËÐÐÏÂÈ¥¡£

ÓÚÊÇÎÒÃÇÓÐÁËÍêÕûµÄDCI¼Ü¹¹£¨Data¡¢ContextºÍInteractiveÈý²ã¼Ü¹¹£©£º

1.Data²ãÃèÊöϵͳÓÐÄÄЩÁìÓò¸ÅÄî¼°ÆäÖ®¼äµÄ¹ØÏµ£¬¸Ã²ãרעÓÚÁìÓò¶ÔÏóµÄÈ·Á¢ºÍÕâЩ¶ÔÏóµÄÉúÃüÖÜÆÚ¹ÜÀí¼°¹ØÏµ£¬ÈóÌÐòÔ±Õ¾ÔÚ¶ÔÏóµÄ½Ç¶È˼¿¼ÏµÍ³£¬´Ó¶øÈá°ÏµÍ³ÊÇʲô¡±¸üÈÝÒ×±»Àí½â¡£

2.Context²ã£ºÊǾ¡¿ÉÄܱ¡µÄÒ»²ã¡£ContextÍùÍù±»ÊµÏÖµÃÎÞ״̬£¬Ö»ÊÇÕÒµ½ºÏÊʵÄrole£¬ÈÃrole½»»¥ÆðÀ´Íê³ÉÒµÎñÂß¼­¼´¿É¡£µ«ÊǼòµ¥²¢²»´ú±í²»ÖØÒª£¬ÏÔʾ»¯context²ãÕýÊÇΪÈËÈ¥Àí½âÈí¼þÒµÎñÁ÷³ÌÌṩÇÐÈëµãºÍÖ÷Ïß¡£

3.Interactive²ãÖ÷ÒªÌåÏÖÔÚ¶ÔroleµÄ½¨Ä££¬roleÊÇÿ¸öcontextÖи´ÔÓµÄÒµÎñÂß¼­µÄÕæÕýÖ´ÐÐÕߣ¬ÌåÏÖ¡°ÏµÍ³×öʲô¡±¡£roleËù×öµÄÊǶÔÐÐΪ½øÐн¨Ä££¬ËüÁª½ÓÁËcontextºÍÁìÓò¶ÔÏó¡£ÓÉÓÚϵͳµÄÐÐΪÊǸ´ÔÓÇÒ¶à±äµÄ£¬roleʹµÃϵͳ½«Îȶ¨µÄÁìÓòÄ£ÐͲãºÍ¶à±äµÄϵͳÐÐΪ²ã½øÐÐÁË·ÖÀ룬ÓÉroleרעÓÚ¶ÔϵͳÐÐΪ½øÐн¨Ä£¡£¸Ã²ãÍùÍù¹Ø×¢ÓÚϵͳµÄ¿ÉÀ©Õ¹ÐÔ£¬¸ü¼ÓÌù½üÓÚÈí¼þ¹¤³Ìʵ¼ù£¬ÔÚÃæÏò¶ÔÏóÖиü¶àµÄÊÇÒÔÀàµÄÊӽǽøÐÐ˼¿¼Éè¼Æ¡£

DCIĿǰ¹ã·º±»¿´×÷ÊǶÔDDDµÄÒ»ÖÖ·¢Õ¹ºÍ²¹³ä£¬ÓÃÔÚ»ùÓÚÃæÏò¶ÔÏóµÄÁìÓò½¨Ä£ÉÏ¡£ÏÔʽµÄ¶Ôrole½øÐн¨Ä££¬½â¾öÁËÃæÏò¶ÔÏó½¨Ä£ÖеijäѪģÐÍºÍÆ¶ÑªÄ£ÐÍÖ®Õù¡£DCIͨ¹ýÏÔʽµÄÓÃrole¶ÔÐÐΪ½øÐн¨Ä££¬Í¬Ê±ÈÃroleÔÚcontextÖпÉÒԺͶÔÓ¦µÄÁìÓò¶ÔÏó½øÐаó¶¨(cast)£¬´Ó¶ø¼È½â¾öÁËÊý¾Ý±ß½çºÍÐÐΪ±ß½ç²»Ò»ÖµÄÎÊÌ⣬Ҳ½â¾öÁËÁìÓò¶ÔÏóÖÐÊý¾ÝºÍÐÐΪ¸ßÄÚ¾ÛµÍñîºÏµÄÎÊÌâ¡£

ÃæÏò¶ÔÏó½¨Ä£ÃæÁÙµÄÒ»¸ö¼¬ÊÖÎÊÌâÊÇÊý¾Ý±ß½çºÍÐÐΪ±ß½çÍùÍù²»Ò»Ö¡£×ñÑ­Ä£¿é»¯µÄ˼Ï룬ÎÒÃÇͨ¹ýÀཫÐÐΪºÍÆä½ôÃÜñîºÏµÄÊý¾Ý·â×°ÔÚÒ»Æð¡£µ«ÊÇÔÚ¸´ÔÓµÄÒµÎñ³¡¾°Ï£¬ÐÐΪÍùÍù¿çÔ½¶à¸öÁìÓò¶ÔÏó£¬ÕâÑùµÄÐÐΪÈç¹û·ÅÔÚijһ¸ö¶ÔÏóÖбØÈ»»áµ¼Ö±ðµÄ¶ÔÏóÐèÒªÏò¸Ã¶ÔÏó±©Â©ÆäÄÚ²¿×´Ì¬¡£ËùÒÔÃæÏò¶ÔÏó·¢Õ¹µÄºóÀ´£¬ÁìÓò½¨Ä£³öÏÖÁ½ÖÖÅɱðÖ®Õù£¬Ò»ÖÖÇãÏòÓÚ½«¿çÔ½¶à¸öÁìÓò¶ÔÏóµÄÐÐΪ½¨Ä£ÔÚÁìÓò·þÎñÖС£Èç¹ûÕâÖÖ×ö·¨Ê¹Óùý¶È£¬Ôò»áµ¼ÖÂÁìÓò¶ÔÏó±ä³ÉÖ»Ìṩһ¶Ñget·½·¨µÄÑÆ¶ÔÏó£¬ÕâÖÖ½¨Ä£½á¹û±»³ÆÖ®ÎªÆ¶ÑªÄ£ÐÍ¡£¶øÁíÒ»ÅÉÔò¼á¶¨µÄÈÏΪ·½·¨Ó¦¸ÃÊôÓÚÁìÓò¶ÔÏó£¬ËùÒÔËùÓеÄÒµÎñÐÐΪÈÔÈ»±»·ÅÔÚÁìÓò¶ÔÏóÖУ¬ÕâÑùµ¼ÖÂÁìÓò¶ÔÏóËæ×ÅÖ§³ÖµÄÒµÎñ³¡¾°±ä¶à¶ø±ä³ÉÉϵÛÀ࣬¶øÇÒÀàÄÚ²¿·½·¨µÄ³éÏó²ã´ÎºÜÄÑÒ»Ö¡£ÁíÍâÓÉÓÚÐÐΪ±ß½çºÜÄÑÇ¡µ±£¬µ¼Ö¶ÔÏóÖ®¼äÊý¾Ý·ÃÎʹØÏµÒ²±È½Ï¸´ÔÓ£¬ÕâÖÖ½¨Ä£½á¹û±»³ÆÖ®Îª³äѪģÐÍ¡£

¹ØÓÚ¶à½ÇÉ«¶ÔÏ󣬾ٸöÉú»îÖеÄÀý×Ó£º

¡¤ÈËÓжàÖØ½ÇÉ«£¬²»Í¬µÄ½ÇÉ«ÂÄÐеÄÖ°Ôð²»Í¬£º

¡¤×÷Ϊ¸¸Ä¸£ºÎÒÃÇÒª¸øº¢×Ó½²¹ÊÊ£¬ÅãËûÃÇÍæÓÎÏ·£¬ºåËüÃÇ˯¾õ¡£

¡¤×÷Ϊ×ÓÅ®£ºÎÒÃÇҪТ¾´¸¸Ä¸£¬ÌýÈ¡ËûÃǵÄÈËÉú½¨Òé¡£

¡¤×÷ΪÏÂÊô£ºÎÒÃÇÒª·þ´ÓÉÏ˾µÄ¹¤×÷°²ÅÅ£¬²¢¸ßÖÊÁ¿Íê³ÉÈÎÎñ¡£

¡¤×÷ΪÉÏ˾£ºÎÒÃÇÒª°²ÅÅÏÂÊôµÄ¹¤×÷£¬²¢½øÐÐÅàÑøºÍ¼¤Àø¡£

ÕâÀïÈË£¨´ó¶ÔÏ󣩾ۺÏÁ˶à¸ö½ÇÉ«£¨Ð¡Àࣩ£¬ÈËÔÚijÖÖ³¡¾°Ï£¬Ö»ÄܰçÑÝÌØ¶¨µÄ½ÇÉ«£º

¡¤ÔÚº¢×ÓÃæÇ°£¬ÎÒÃÇÊǸ¸Ä¸¡£

¡¤ÔÚ¸¸Ä¸ÃæÇ°£¬ÎÒÃÇÊÇ×ÓÅ®¡£

¡¤ÔÚÉÏË¾ÃæÇ°£¬ÎÒÃÇÊÇÏÂÊô¡£

¡¤ÔÚÏÂÊôÃæÇ°£¬ÎÒÃÇÊÇÉÏ˾¡£

ÒýÈëDCIºó£¬DDDËIJã¼Ü¹¹Ä£Ê½ÖеÄDomain²ã±ä±¡ÁË£¬ÒÔǰDomain²ã¶ÔÓ¦DCIÖеÄÈý²ã£¬¶øÏÖÔÚ£º

1.Domain²ãÖ»±£ÁôÁËDCIÖеÄData²ãºÍInteraction²ã£¬ÎÒÃÇÔÚʵ¼ùÖÐͨ³£½«ÕâÁ½²ãʹÓÃĿ¼¸ôÀ룬¼´Í¨¹ýÁ½¸öĿ¼objectºÍroleÀ´·ÖÀë²ãDataºÍInteraction¡£

2.DCIÖеÄContext²ã´ÓDomain²ãÉÏÒÆ±ä³ÉContext²ã¡£

Òò´Ë£¬DDD·Ö²ã¼Ü¹¹Ä£Ê½¾Í±ä³ÉÁËÎå²ã£¬ÈçÏÂͼËùʾ£º

±ÊÕßÔÚʵ¼ùÖУ¬½«ÕâÎå²ãµÄ±¾µØ»¯¶¨ÒåΪ£º

1.User InterfaceÊÇÓû§½Ó¿Ú²ã£¬Ö÷ÒªÓÃÓÚ´¦ÀíÓû§·¢Ë͵ÄRestfulÇëÇóºÍ½âÎöÓû§ÊäÈëµÄÅäÖÃÎļþµÈ£¬²¢½«ÐÅÏ¢´«µÝ¸øApplication²ãµÄ½Ó¿Ú¡£

2.Application²ãÊÇÓ¦Óò㣬¸ºÔð¶à½ø³Ì¹ÜÀí¼°µ÷¶È¡¢¶àÏ̹߳ÜÀí¼°µ÷¶È¡¢¶àЭ³Ìµ÷¶ÈºÍά»¤ÒµÎñʵÀýµÄ״̬ģÐÍ¡£µ±µ÷¶È²ãÊÕµ½Óû§½Ó¿Ú²ãµÄÇëÇóºó£¬Î¯ÍÐContext²ãÓë±¾´ÎÒµÎñÏà¹ØµÄÉÏÏÂÎĽøÐд¦Àí¡£

3.ContextÊÇ»·¾³²ã£¬ÒÔÉÏÏÂÎÄΪµ¥Î»£¬½«Domain²ãµÄÁìÓò¶ÔÏócast³ÉºÏÊʵÄrole£¬ÈÃrole½»»¥ÆðÀ´Íê³ÉÒµÎñÂß¼­¡£

4.Domain²ãÊÇÁìÓò²ã£¬¶¨ÒåÁìÓòÄ£ÐÍ£¬²»½ö°üÀ¨ÁìÓò¶ÔÏó¼°ÆäÖ®¼ä¹ØÏµµÄ½¨Ä££¬»¹°üÀ¨¶ÔÏóµÄ½ÇÉ«roleµÄÏÔʽ½¨Ä£¡£

5.Infrastructure²ãÊÇ»ù´¡ÊµÊ©²ã£¬ÎªÆäËû²ãÌṩͨÓõļ¼ÊõÄÜÁ¦£ºÒµÎñƽ̨£¬±à³Ì¿ò¼Ü£¬³Ö¾Ã»¯»úÖÆ£¬ÏûÏ¢»úÖÆ£¬µÚÈý·½¿âµÄ·â×°£¬Í¨ÓÃËã·¨£¬µÈµÈ¡£

DDDÎå²ã¼Ü¹¹Ä£Ê½ÌÖÂÛÍêÁËÂ𣿹ÊÊ»¹Ã»ÓнáÊø¡­?

±ÊÕß²ÎÓëµÄºÜ¶àDDDÂäµØÊµ¼ù£¬¶¼ÊÇÃæÏò¿ØÖÆÃæ»ò¹ÜÀíÃæÇÒÏûÏ¢½»»¥±È½Ï¶àµÄϵͳ¡£ÕâÀàϵͳµÄÒ»´ÎÒµÎñ£¬°üº¬Ò»×éͬ²½ÏûÏ¢»òÒì²½ÏûÏ¢¹¹³ÉµÄÐòÁУ¬Èç¹û¶¼·ÅÔÚContext²ã£¬»áµ¼Ö¸òãµÄ´úÂë±È½Ï¸´ÔÓ£¬ÓÚÊÇÎÒÃÇ¿¼ÂÇ£º

Context²ãÔÚÃæÏò¿ØÖÆÃæ»ò¹ÜÀíÃæÇÒÏûÏ¢½»»¥±È½Ï¶àµÄϵͳÖÐÓÖ·ÖÁѳÉÁ½²ã£¬¼´Context²ãºÍ´óContext²ã¡£

Context²ã´¦Àíµ¥Î»ÎªAction£¬¶ÔÓ¦Ò»Ìõͬ²½ÏûÏ¢»òÒì²½ÏûÏ¢¡£

´óContext²ã¶ÔÓ¦Ò»¸öÊÂÎñ´¦Àí£¬ÓÉÒ»¸öActionÐòÁÐ×é³É£¬Ò»°ãͨ¹ýTransaction DSLʵÏÖ£¬ËùÒÔÎÒÃÇϰ¹ß°Ñ´óContext²ã½Ð×öTransaction DSL²ã¡£

Application²ãÔÚÃæÏò¿ØÖÆÃæ»ò¹ÜÀíÃæÇÒÏûÏ¢½»»¥±È½Ï¶àµÄϵͳÖо­³£»á×öһЩµ÷¶ÈÏà¹ØµÄ¹¤×÷£¬ËùÒÔÎÒÃÇϰ¹ß°ÑApplication²ã½Ð×öScheduler²ã¡£

Òò´Ë£¬ÔÚÃæÏò¿ØÖÆÃæ»ò¹ÜÀíÃæÇÒÏûÏ¢½»»¥±È½Ï¶àµÄϵͳÖУ¬DDD·Ö²ã¼Ü¹¹Ä£Ê½¾Í±ä³ÉÁËÁù²ã£¬ÈçÏÂͼËùʾ£º

±ÊÕßÔÚʵ¼ùÖУ¬½«ÕâÁù²ãµÄ±¾µØ»¯¶¨ÒåΪ£º

User InterfaceÊÇÓû§½Ó¿Ú²ã£¬Ö÷ÒªÓÃÓÚ´¦ÀíÓû§·¢Ë͵ÄRestfulÇëÇóºÍ½âÎöÓû§ÊäÈëµÄÅäÖÃÎļþµÈ£¬²¢½«ÐÅÏ¢´«µÝ¸øScheduler²ãµÄ½Ó¿Ú¡£

SchedulerÊǵ÷¶È²ã£¬¸ºÔð¶à½ø³Ì¹ÜÀí¼°µ÷¶È¡¢¶àÏ̹߳ÜÀí¼°µ÷¶È¡¢¶àЭ³Ìµ÷¶ÈºÍά»¤ÒµÎñʵÀýµÄ״̬ģÐÍ¡£µ±µ÷¶È²ãÊÕµ½Óû§½Ó¿Ú²ãµÄÇëÇóºó£¬Î¯ÍÐTransaction²ãÓë±¾´Î²Ù×÷Ïà¹ØµÄÊÂÎñ½øÐд¦Àí¡£

TransactionÊÇÊÂÎñ²ã£¬¶ÔÓ¦Ò»¸öÒµÎñÁ÷³Ì£¬±ÈÈçUE Attach£¬½«¶à¸öͬ²½ÏûÏ¢»òÒì²½ÏûÏ¢µÄ´¦ÀíÐòÁÐ×éºÏ³ÉÒ»¸öÊÂÎñ£¬¶øÇÒÔÚ´ó¶à³¡¾°Ï£¬¶¼ÓÐÑ¡Ôñ½á¹¹¡£ÍòÒ»ÊÂÎñÖ´ÐÐʧ°Ü£¬ÔòÁ¢¼´½øÐлعö¡£µ±ÊÂÎñ²ãÊÕµ½µ÷¶È²ãµÄÇëÇóºó£¬Î¯ÍÐContext²ãµÄAction½øÐд¦Àí£¬³£³£»¹°éËæÊ¹ÓÃContext²ãµÄSpecification£¨Î½´Ê£©½øÐÐActionµÄÑ¡Ôñ¡£

ContextÊÇ»·¾³²ã£¬ÒÔActionΪµ¥Î»£¬´¦ÀíÒ»Ìõͬ²½ÏûÏ¢»òÒì²½ÏûÏ¢£¬½«Domain²ãµÄÁìÓò¶ÔÏócast³ÉºÏÊʵÄrole£¬ÈÃrole½»»¥ÆðÀ´Íê³ÉÒµÎñÂß¼­¡£»·¾³²ãͨ³£Ò²°üÀ¨SpecificationµÄʵÏÖ£¬¼´Í¨¹ýDomain²ãµÄ֪ʶȥÍê³ÉÒ»¸öÌõ¼þÅжϡ£

Domain²ãÊÇÁìÓò²ã£¬¶¨ÒåÁìÓòÄ£ÐÍ£¬²»½ö°üÀ¨ÁìÓò¶ÔÏó¼°ÆäÖ®¼ä¹ØÏµµÄ½¨Ä££¬»¹°üÀ¨¶ÔÏóµÄ½ÇÉ«roleµÄÏÔʽ½¨Ä£¡£

Infrastructure²ãÊÇ»ù´¡ÊµÊ©²ã£¬ÎªÆäËû²ãÌṩͨÓõļ¼ÊõÄÜÁ¦£ºÒµÎñƽ̨£¬±à³Ì¿ò¼Ü£¬³Ö¾Ã»¯»úÖÆ£¬ÏûÏ¢»úÖÆ£¬µÚÈý·½¿âµÄ·â×°£¬Í¨ÓÃËã·¨£¬µÈµÈ¡£

ÊÂÎñ²ãµÄºËÐÄÊÇÊÂÎñÄ£ÐÍ£¬ÊÂÎñÄ£Ð͵Ŀò¼Ü´úÂëÒ»°ã·ÅÔÚ»ù´¡ÉèÊ©²ã¡£¹ØÓÚÊÂÎñÄ£ÐÍ£¬±ÊÕßÒÔǰ·ÖÏí¹ýһƪÎÄÕ¡ª¡ª¡¶GolangÊÂÎñÄ£ÐÍ[1]¡·£¬¸ÐÐËȤµÄͬѧ¿ÉÒÔ¿´¿´¡£

×ÛÉÏËùÊö£¬DDDÁù²ã¼Ü¹¹¿ÉÒÔ¿´×öÊÇDDDÎå²ã¼Ü¹¹ÔÚÌØ¶¨ÁìÓòµÄ±äÌ壬ÎÒÃÇͳ³ÆÎªDDDÎå²ã¼Ü¹¹£¬¶øDDDÎå²ã¼Ü¹¹Ó봫ͳµÄËIJã¼Ü¹¹ÀàËÆ£¬¶¼ÊÇÏÞ¶¨ÐÍËÉÉ¢·Ö²ã¼Ü¹¹¡£

ģʽÈý£ºÁù±ßÐμܹ¹

ÓÐÒ»ÖÖ·½·¨¿ÉÒԸĽø·Ö²ã¼Ü¹¹£¬¼´ÒÀÀµµ¹ÖÃÔ­Ôò£¨Dependency Inversion Principle£¬DIP£©£¬Ëüͨ¹ý¸Ä±ä²»Í¬²ãÖ®¼äµÄÒÀÀµ¹ØÏµ´ïµ½¸Ä½øÄ¿µÄ¡£

ÒÀÀµµ¹ÖÃÔ­ÔòÓÉRobert C. MartinÌá³ö£¬Õýʽ¶¨ÒåΪ£º

¡¤¸ß²ãÄ£¿é²»Ó¦¸ÃÒÀÀµÓڵײãÄ£¿é£¬Á½Õß¶¼Ó¦¸ÃÒÀÀµÓÚ³éÏó¡£

¡¤³éÏó²»Ó¦¸ÃÒÀÀµÓÚϸ½Ú£¬Ï¸½ÚÓ¦¸ÃÒÀÀµÓÚ³éÏó¡£

¸ù¾Ý¸Ã¶¨Ò壬DDD·Ö²ã¼Ü¹¹ÖеĵͲã×é¼þÓ¦¸ÃÒÀÀµÓڸ߲ã×é¼þÌṩµÄ½Ó¿Ú£¬¼´ÎÞÂ۸߲㻹ÊǵͲ㶼ÒÀÀµÓÚ³éÏó£¬Õû¸ö·Ö²ã¼Ü¹¹ºÃÏñ±»ÍÆÆ½ÁË¡£Èç¹ûÎÒÃǰѷֲã¼Ü¹¹ÍÆÆ½£¬ÔÙÏòÆäÖмÓÈëһЩ¶Ô³ÆÐÔ£¬¾Í»á³öÏÖÒ»ÖÖ¾ßÓжԳÆÐÔÌØÕ÷µÄ¼Ü¹¹·ç¸ñ£¬¼´Áù±ßÐμܹ¹¡£Áù±ßÐμܹ¹ÊÇAlistair CockburnÔÚ2005ÄêÌá³öµÄ£¬ÔÚÕâÖּܹ¹ÖУ¬²»Í¬µÄ¿Í»§Í¨¹ý¡°Æ½µÈ¡±µÄ·½Ê½Óëϵͳ½»»¥¡£ÐèҪеĿͻ§Â𣿲»ÊÇÎÊÌâ¡£Ö»ÐèÒªÌí¼ÓÒ»¸öеÄÊÊÅäÆ÷½«¿Í»§ÊäÈëת»¯³ÉÄܱ»ÏµÍ³APIËùÀí½âµÄ²ÎÊý¾ÍÐС£Í¬Ê±£¬¶ÔÓÚÿÖÖÌØ¶¨µÄÊä³ö£¬¶¼ÓÐÒ»¸öн¨µÄÊÊÅäÆ÷¸ºÔðÍê³ÉÏàÓ¦µÄת»¯¹¦ÄÜ¡£

Áù±ßÐμܹ¹Ò²³ÆÎª¶Ë¿ÚÓëÊÊÅäÆ÷£¬ÈçÏÂͼËùʾ£º

Áù±ßÐÎÿÌõ²»Í¬µÄ±ß´ú±íÁ˲»Í¬ÀàÐ͵Ķ˿ڣ¬¶Ë¿ÚҪô´¦ÀíÊäÈ룬Ҫô´¦ÀíÊä³ö¡£¶ÔÓÚÿÖÖÍâ½çÀàÐÍ£¬¶¼ÓÐÒ»¸öÊÊÅäÆ÷ÓëÖ®¶ÔÓ¦£¬Íâ½çͨ¹ýÓ¦ÓòãAPIÓëÄÚ²¿½øÐн»»¥¡£ÉÏͼÖÐÓÐ3¸ö¿Í»§ÇëÇó¾ùµÖ´ïÏàͬµÄÊäÈë¶Ë¿Ú£¨ÊÊÅäÆ÷A¡¢BºÍC£©£¬ÁíÒ»¸ö¿Í»§ÇëÇóʹÓÃÁËÊÊÅäÆ÷D¡£¼ÙÉèǰ3¸öÇëÇóʹÓÃÁËHTTPЭÒ飨ä¯ÀÀÆ÷¡¢RESTºÍSOAPµÈ£©£¬¶øºóÒ»¸öÇëÇóʹÓÃÁËAMQPЭÒ飨±ÈÈçRabbitMQ£©¡£¶Ë¿Ú²¢Ã»ÓÐÃ÷È·µÄ¶¨Ò壬ËüÊÇÒ»¸ö·Ç³£Áé»îµÄ¸ÅÄî¡£ÎÞÂÛ²ÉÓÃÄÄÖÖ·½Ê½¶Ô¶Ë¿Ú½øÐл®·Ö£¬µ±¿Í»§ÇëÇóµ½´ïʱ£¬¶¼Ó¦¸ÃÓÐÏàÓ¦µÄÊÊÅäÆ÷¶ÔÊäÈë½øÐÐת»¯£¬È»ºó¶Ë¿Ú½«µ÷ÓÃÓ¦ÓóÌÐòµÄij¸ö²Ù×÷»òÕßÏòÓ¦ÓóÌÐò·¢ËÍÒ»¸öʼþ£¬¿ØÖÆÈ¨Óɴ˽»¸øÄÚ²¿ÇøÓò¡£

Ó¦ÓóÌÐòͨ¹ý¹«¹²API½ÓÊÕ¿Í»§ÇëÇó£¬Ê¹ÓÃÁìÓòÄ£ÐÍÀ´´¦ÀíÇëÇó¡£ÎÒÃÇ¿ÉÒÔ½«DDDÕ½ÊõÉè¼ÆµÄ½¨Ä£ÔªËØRepositoryµÄʵÏÖ¿´×÷Êdz־û¯ÊÊÅäÆ÷£¬¸ÃÊÊÅäÆ÷ÓÃÓÚ·ÃÎÊÏÈǰ´æ´¢µÄ¾ÛºÏʵÀý»òÕß±£´æÐµľۺÏʵÀý¡£ÕýÈçͼÖеÄÊÊÅäÆ÷E¡¢FºÍGËùչʾµÄ£¬ÎÒÃÇ¿ÉÒÔͨ¹ý²»Í¬µÄ·½Ê½ÊµÏÖ×ÊÔ´¿â£¬±ÈÈç¹ØÏµÐÍÊý¾Ý¿â¡¢»ùÓÚÎĵµµÄ´æ´¢¡¢·Ö²¼Ê½»º´æ»òÄÚ´æ´æ´¢µÈ¡£Èç¹ûÓ¦ÓóÌÐòÏòÍâ½ç·¢ËÍÁìÓòʼþÏûÏ¢£¬ÎÒÃǽ«Ê¹ÓÃÊÊÅäÆ÷H½øÐд¦Àí¡£¸ÃÊÊÅäÆ÷´¦ÀíÏûÏ¢Êä³ö£¬¶øÉÏÃæÌáµ½µÄ´¦ÀíAMQPÏûÏ¢µÄÊÊÅäÆ÷ÔòÊÇ´¦ÀíÏûÏ¢ÊäÈëµÄ£¬Òò´ËÓ¦¸ÃʹÓò»Í¬µÄ¶Ë¿Ú¡£

ÎÒÃÇÔÚʵ¼ÊµÄÏîÄ¿¿ª·¢ÖУ¬²»Í¬²ãµÄ×é¼þ¿ÉÒÔͬʱ¿ª·¢¡£µ±Ò»¸ö×é¼þµÄ¹¦ÄÜÃ÷È·ºó£¬¾Í¿ÉÒÔÁ¢¼´Æô¶¯¿ª·¢¡£ÓÉÓÚ¸Ã×é¼þµÄÓû§Óжà¸ö£¬²¢ÇÒÕâЩÓû§µÄ²àÖØµã²»Í¬£¬ËùÒÔÐèÒªÌṩ¶à¸ö²»Í¬µÄ½Ó¿Ú¡£Í¬Ê±£¬ÕâЩÓû§µÄÈÏʶҲÊDz»¶ÏÉîÈëµÄ£¬¿ÉÄÜ»á¶à´ÎÖØ¹¹Ïà¹ØµÄ½Ó¿Ú¡£ÓÚÊÇ£¬×é¼þµÄ¶à¸öÓû§¾­³£»áÕÒ×é¼þµÄ¿ª·¢ÕßÌÖÂÛÕâЩÎÊÌ⣬ÎÞÐÎÖнµµÍÁË×é¼þµÄ¿ª·¢Ð§ÂÊ¡£

ÎÒÃÇ»»Ò»ÖÖ·½Ê½£¬×é¼þµÄ¿ª·¢ÕßÔÚÃ÷È·ÁË×é¼þµÄ¹¦Äܺó¾ÍרעÓÚ¹¦ÄܵĿª·¢£¬È·±£¹¦ÄÜÎȶ¨ºÍ¸ßЧ¡£×é¼þµÄÓû§×Ô¼º¶¨Òå×é¼þµÄ½Ó¿Ú£¨¶Ë¿Ú£©£¬È»ºó»ùÓÚ½Ó¿Úд²âÊÔ£¬²¢²»¶ÏÑݽø½Ó¿Ú¡£ÔÚ¿ç²ã¼¯³É²âÊÔʱ£¬ÓÉ×é¼þ¿ª·¢Õß»òÓû§ÔÙ¿ª·¢Ò»¸öÊÊÅäÆ÷¾Í¿ÉÒÔÁË¡£

Áù±ßÐμܹ¹Ä£Ê½µÄÑݱä

¾¡¹ÜÁù±ßÐμܹ¹Ä£Ê½ÒѾ­ºÜºÃ£¬µ«ÊÇûÓÐ×îºÃÖ»ÓиüºÃ£¬ÑݱäûÓо¡Í·¡£ÔÚÁù±ßÐμܹ¹Ä£Ê½Ìá³öºóµÄÕâЩÄ꣬ÓÖÒÀ´ÎÑÜÉú³öÈýÖÖÁù±ßÐμܹ¹Ä£Ê½µÄ±äÌ壬¸ÐÐËȤµÄ¶ÁÕß¿ÉÒÔ×ÔÐÐѧϰ£º

Jeffrey PalermoÔÚ2008ÄêÌá³öÁËÑó´Ð¼Ü¹¹£¬Áù±ßÐμܹ¹ÊÇÑó´Ð¼Ü¹¹µÄÒ»¸ö³¬¼¯¡£

Robert C. MartinÔÚ2012ÄêÌá³öÁ˸ɾ»¼Ü¹¹£¨Clean Architecture£©£¬ÕâÊÇÁù±ßÐμܹ¹µÄÒ»¸ö±äÌå¡£

Russ MilesÔÚ2013ÄêÌá³öÁËLife PreserverÉè¼Æ£¬ÕâÊÇÒ»ÖÖ»ùÓÚÁù±ßÐμܹ¹µÄÉè¼Æ¡£

С½á

±¾ÎÄÏȺͶÁÕßÒ»Æð»Ø¹ËÁËDDDºÍ·Ö²ã¼Ü¹¹µÄÏà¹ØÖªÊ¶£¬È»ºó½«DDD·Ö²ã¼Ü¹¹Öг£ÓõÄÈýÖÖģʽ£¨ËIJã¼Ü¹¹¡¢Îå²ã¼Ü¹¹ºÍÁù±ßÐμܹ¹£©½áºÏʵ¼ù¾­Ñé·Ö±ð½øÐÐÏêϸ²ûÊö£¬Ê¹µÃ¶ÁÕßÉî¿ÌÀí½âDDD·Ö²ã¼Ü¹¹Ä£Ê½£¬ÒÔ±ãÔÚ΢·þÎñµÄ¿ª·¢Êµ¼ùÖиù¾Ý¾ßÌåÇé¿öÑ¡Ôñ×îºÏÊʵÄDDD·Ö²ã¼Ü¹¹Ä£Ê½£¬´Ó¶ø½»¸¶½á¹¹ÇåÎúÇÒÒ×ά»¤µÄÈí¼þ²úÆ·¡£

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

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

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

ÅäÖùÜÀí¡¢ÈÕ¹¹½¨Óë³ÖÐø¼¯³É
Èí¼þ¼Ü¹¹Éè¼Æ·½·¨¡¢°¸ÀýÓëʵ¼ù
µ¥Ôª²âÊÔ¡¢Öع¹¼°³ÖÐø¼¯³É
»ùÓÚAndroidµÄµ¥Ôª¡¢ÐÔÄܲâÊÔ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]
 
×îÐÂÎÄÕÂ
iPersonµÄ¹ý³Ì¹Û£ºÒª ¹ý³Ì or ½á¹û
¡°ÒÔÈËΪ±¾¡±µÄ¹¤³ÌÕÜѧ
ÆóÒµ¼Ü¹¹¡¢TOGAFÓëArchiMate¸ÅÀÀ
UML ͼ½â£ºË³Ðòͼ£¨ sequence diagram £©
UML ͼ½â£º¶ÔÏóͼ£¨ class diagram £©
×îпγÌ
»ùÓÚUMLºÍEA½øÐÐϵͳ·ÖÎöÉè¼Æ
UML+EA+ÃæÏò¶ÔÏó·ÖÎöÉè¼Æ
»ùÓÚSysMLºÍEA½øÐÐϵͳÉè¼ÆÓ뽨ģ
UML + ǶÈëʽϵͳ·ÖÎöÉè¼Æ
ÁìÓòÇý¶¯µÄ½¨Ä£ÓëÉè¼Æ
³É¹¦°¸Àý
ijµçÐÅÔËÓª¹©Ó¦ÉÌ Ó¦ÓÃUML½øÐÐÃæÏò¶ÔÏó·ÖÎö
·é»ðͨÐÅ UML½øÐÐÃæÏò¶ÔÏóµÄ·ÖÎöÉè¼Æ
Î÷ÃÅ×Ó UMLÓëǶÈëʽÈí¼þ·ÖÎöÉè¼Æ
º½Ìì¿Æ¹¤Ä³×Ó¹«Ë¾ ´Óϵͳµ½Èí¼þµÄ·ÖÎö¡¢Éè¼Æ
ÉîÛÚijÆû³µÆóÒµ Ä£ÐÍÇý¶¯µÄ·ÖÎöÉè¼Æ