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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
ÁìÓòÇý¶¯Éè¼Æ£¨DDD£©£º·Ö²ã¼Ü¹¹
 
 
  3053  次浏览      31
 2021-1-7 
 
±à¼­ÍƼö:
´ËÎÄÖ÷Òª½éÉÜÁËOSI Æß²ã¼Ü¹¹¡¢DDD²ÉÓõÄËÉÉ¢µÄ·Ö²ã¼Ü¹¹¡¢¼Ì³Ð·Ö²ã¼Ü¹¹µÈÏà¹ØÄÚÈÝ¡£
±¾ÎÄÀ´×ÔÓÚ΢ÐŹ«ÖÚºÅ:²»¹»¾ßÌ壬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼­¡¢ÍƼö¡£

·Ö²ã¼Ü¹¹

ÔÚÓ¦ÓÃϵͳ¿ª·¢ÖУ¬²ÉÓÃÑϸñµÄ¡¢µ¥Ò»µÄ¡¢ÕæÕýµÄµÄ·Ö²ã¼Ü¹¹ÊÇ¿ÉÒԵ쬵«Êµ¼ÊÉÏÎÒÃÇÒѾ­²ÉÓÃÁ˶àÖּܹ¹Ä£Ê½Éè¼ÆÏµÍ³¡£µ±¶àÖÖ²»Í¬·¶Ê½µÄ¼Ü¹¹»ìºÏÔÚÒ»Æð£¬Äã»á²»»á³öÏÖ¡°Ö¸Â¹ÎªÂí¡±µÄÏÖÏóÄØ£¿

Ñϸñ·Ö²ã¼Ü¹¹

ÔÚÑо¿·Ö²ã¼Ü¹¹Ê±£¬³£Í¨¹ý¸ÅÄîÐԵ͍Òå»ò OSI Æß²ãÓ¦Ó㨼ܹ¹£©À´ËµÃ÷»ò½âÊÍ·Ö²ã¼Ü¹¹£º

¼Ü¹¹Ä£Ê½ Layers ÓÐÖúÓÚ½«Ó¦ÓóÌÐò»®·ÖΪ¶à×é×ÓÈÎÎñ£¬ÆäÖÐÿ×é×ÓÈÎÎñ¶¼Î»ÓÚÌØ¶¨³éÏó²ã¡£

ͼƬȡ×Ô¡¶ POSA , Vol.I , p22 ¡·

×÷Ϊһ¸öÔÚÏîÄ¿ÖÐÒýÈë·Ö²ã¼Ü¹¹µÄÓ¦ÓÃÕߣ¬ÎÒÃÇÓ¦¸Ã´Ó¸ü¾ßÌåµÄ¹æ·¶À´ÊµÏÖ·Ö²ã¼Ü¹¹£º

ÏàÁÚ²ãÖ®¼ä±ØÐëÊǵ¥ÏòñîºÏ¡£ÉϲãÖ»ÄÜÒÀÀµÏ²㣬ϲãÓÀÔ¶²»ÄÜÒÀÀµÉϲ㡣

ÏàÁÚ²ãÖ®¼ä±ØÐëÊǵ¥ÏòͨÐÅ¡£ÉϲãÈ¥µ÷ÓÃϲãËùÌṩµÄ½Ó¿Ú£¬Ï²ãÓÀÔ¶²»Äܵ÷ÓÃÉϲãµÄ½Ó¿Ú¡£

¡¶ POSA , Vol.I ¡· ΪÎÒÃÇÌṩÁ˸ü¶àµÄʵÏֹ淶£¬È»¶øÎÒÒª½â¾öµÄÊÇÓйزãµÄµ¥ÏòÒÀÀµÎÊÌâ¡£ÒòΪÓÐһЩÈËÔÚʹÓ÷ֲã¼Ü¹¹Ê±£¬ÓÈÆäÊǽ«·Ö²ã¼Ü¹¹ÒýÈëµ½ÏîÄ¿µÄĿ¼½á¹¹Ê±£¬¶ÔÓÚijЩ¶ÔÏóµÄ»®·Ö£¨´ÓÊô£©´æÔÚһЩ»ìÂÒÎÊÌâ¡£

Èç¹ûÄãÓÐÐËȤÁ˽â¸ü¶à·Ö²ã¼Ü¹¹µÄʵÏֹ淶£¬¿É²Î¿¼£º¡¶ POSA , Vol.I ¡·µÚ¶þÊ®ÁùÒ³µ½µÚ¶þÊ®¾ÅÒ³Ïà¹ØÖªÊ¶¡£

ËÉÉ¢·Ö²ã¼Ü¹¹£¨Relaxed Layered System£©

ÔÚÁìÓòÇý¶¯Éè¼Æ£¨DDD£©ÖвÉÓõÄÊÇËÉÉ¢·Ö²ã¼Ü¹¹£¬²ã¼ä¹ØÏµ²»ÄÇôÑϸñ¡£Ã¿²ã¶¼¿ÉÄÜʹÓÃËüÏÂÃæËùÓвãµÄ·þÎñ£¬¶ø²»½ö½öÊÇÏÂÒ»²ãµÄ·þÎñ¡£Ã¿²ã¶¼¿ÉÄÜÊǰë͸Ã÷µÄ£¬ÕâÒâζ×ÅÓÐЩ·þÎñÖ»¶ÔÉÏÒ»²ã¿É¼û£¬¶øÓÐЩ·þÎñ¶ÔÉÏÃæµÄËùÓв㶼¿É¼û¡£

×¢Ò⣺ËÉÉ¢·Ö²ã¼Ü¹¹ÒÀÈ»Êǵ¥ÏòÒÀÀµ£¬±íÃ÷ÉϲãÖ»Äܵ÷ÓÃϲãµÄ·þÎñ£¬Ï²㲻Äܵ÷ÓÃÉϲãµÄ·þÎñ¡£

¼Ì³Ð·Ö²ã¼Ü¹¹£¨Layering Through Inheritance£©

ͬʱÔÚÁìÓòÇý¶¯Éè¼Æ£¨DDD£©ÖÐÒ²²ÉÓÃÁ˼̳зֲã¼Ü¹¹£¬¸ß²ã¼Ì³Ð²¢ÊµÏֵͲã½Ó¿Ú¡£ÎÒÃÇÐèÒªµ÷Õûһϸ÷²ãµÄ˳Ðò£¬²¢ÇÒ½«»ù´¡ÉèÊ©²ãÒÆ¶¯µ½×î¸ß²ã¡£

×¢Ò⣺¼Ì³Ð·Ö²ã¼Ü¹¹ÒÀÈ»Êǵ¥ÏòÒÀÀµ£¬ÕâÒ²Òâζ×ÅÁìÓò²ã¡¢Ó¦Óò㡢±íÏֲ㽫²»ÄÜÒÀÀµ»ù´¡ÉèÊ©²ã£¬Ïà·´»ù´¡ÉèÊ©²ã¿ÉÒÔÒÀÀµËüÃÇ¡£

ÁìÓò²ã UserRepository ½Ó¿Ú£º

package com.mallfoundry.user.domain;
public interface UserRepository {
User save(User user);
}

»ù´¡ÉèÊ©²ã JpaUserRepository ʵÏÖÀࣺ

package com.mallfoundry.user.infrastructure.persistence;
public class JpaUserRepository implements UserRepository {
private final EntityManager entityManager;
public JpaUserRepository(EntityManager entityManager) {
this.entityManager = entityManager;
}
@Override
public User save(User user) {
return this.entityManager.merge(user);
}
}

°ü£¨Package£©Óë·Ö²ã¼Ü¹¹

ÎÒÃÇȷʵʹÓðüÀ´»®·Ö²ã¼¶£¬µ«ÊǰüÃû²¢²»ÄÜÕæÕý±íʾ·Ö²ã¡£

×ÊÔ´¿â£¨Repository£©

ÎÒÃÇͨ³£½«×ÊÔ´¿âµÄʵÏÖ·ÅÖÃÔÚ»ù´¡ÉèÊ©²ã£¬ÕâÊÇÒòΪÎÒÃDzÉÓÃÁ˼̳зֲã¼Ü¹¹¡£Èç¹ûÄãÏÖÔÚ²ÉÓõÄÊÇËÉÉ¢·Ö²ã¼Ü¹¹£¬ÄãÐèÒª½«×ÊÔ´¿âµÄʵÏÖ·ÅÖÃÔÚÁìÓò²ã¡£ÕâÊDzãµÄµ¥ÏòÒÀÀµÔ­ÔòËùÖ£¬Äã²»Ó¦¸ÃÆÆ»µÕâ¸öÔ­Ôò¡£Ã»ÓÐÈκÎÀíÓÉÐè񻮮»µ·Ö²ã¼Ü¹¹µÄµ¥ÏòÒÀÀµÔ­Ôò£¬³ý·ÇÄã²»²ÉÓ÷ֲã¼Ü¹¹¡£

Èý²ã»òËIJã¼Ü¹¹

ÎÒÃÇÓ¦¸Ã´Ó»ìÂÒµ½ÓÐÐòµÄÕâ¸öÀúÊ·¹ý³ÌÈ¥Ñо¿£¨·ÖÎö£©·Ö²ã¼Ü¹¹£¬ÓÈÆäÊÇÎÒÃÇÏÖÔÚ´¦ÔÚǰºó¶Ë·ÖÀëµÄ»·¾³Ï£¬Ó¦ÓÃϵͳʹÓ÷ֲã¼Ü¹¹ÓÖÃæÁÙ×ÅʲôÑùµÄ»®·Ö±ä»¯¡£

µÚÒ»¸ö½×¶Î£ºÓ¦ÓÃϵͳֻÓÐÁ½²ã£º±íʾ£¨ÏÖ£©²ãºÍÊý¾Ý¿â²ã¡£ÔÚÊÓͼÖÐÖ±½ÓʹÓÃÊý¾Ý¿âËùÌṩµÄ·ÃÎʽӿڲÙ×÷Êý¾Ý£¬È磺JDBC£¬ÔÚÊÓͼÖÐÖ±½ÓʹÓÃResultSet ±íʾÊý¾Ý¡££¨ÐèÒªÌØ±ð×¢ÒâµÄÊÇ£ºÔÚÊÓͼÖÐÖ±½ÓʹÓà ResultSet ¡££©

µÚ¶þ¸ö½×¶Î£ºÓ¦ÓÃϵͳ»®·ÖΪÈý²ã£º±íÏֲ㡢ÁìÓò²ãºÍÊý¾Ý¿â²ã¡£ÔÚÕâ¸ö½×¶Î£¬ÎÒÃÇÒѾ­¿ªÊ¼Òâʶµ½Ä£ÐÍÁË£¬Ä£Ð͵ijöÏÖÒâζ×ÅÔÚÊÓͼÖв»ÔÚÖ±½ÓʹÓà ResultSet ÁË£¬¶øÊÇʹÓÃ´Ó ResultSet ÏàÓ³ÉäµÄ±à³ÌÓïÑÔÖеĽṹÌ壨struct£©»òÕß¶ÔÏóÀࣨclass£©¡£Õâ±íʾ£º´Ó±à³ÌÓïÑÔÖеıíʾ·¨¿ÉÒÔ³éÏóÒµÎñÓòÖеĸÅÄî½á¹¹ÁË¡£

µÚÈý¸ö½×¶Î£ºÓ¦ÓÃϵͳ»®·ÖΪËIJ㣺±íÏֲ㡢ӦÓã¨ÒµÎñ£©Âß¼­²ã¡¢ÁìÓò²ãºÍÊý¾Ý¿â²ã¡£ÓÉÓÚÒµÎñÂß¼­ÒÀÈ»´æÔÚÊÓͼÖУ¬ÎÒÃÇÐèÒª½«ÊÓͼÖеÄÒµÎñÂß¼­ÓëÊÓͼ·ÖÀë³öÀ´£¬´Ëʱ³öÏÖÁËÓ¦Óò㡣ͬʱ±íÏÖ²ãÒ²ÓÐËùÍÆ½ø£¬±íÏÖ²ãʹÓà MVC ¼Ü¹¹¡£Í¨¹ýÔÚ Controller µ÷ÓÃÓ¦ÓòãËùÌṩµÄ½Ó¿Ú²¢»ñµÃ½Ó¿ÚËù·µ»ØµÄÄ£ÐÍ£¨model£©Êý¾Ý£¬²¢ÔÚ Controller Öн« model ºÍ view ×éºÏÆðÀ´£¬×îÖÕÍê³ÉäÖȾ¹¤×÷¡£ÕýÊÇÒòΪÔÚ±íÏÖ²ãʹÓà MVC ¼Ü¹¹Ê¹µÃÊÓͼ£¨view£©ÓëϲãʵÏÖËÉñîºÏ¡£

Ó¦ÓÃϵͳʹÓ÷ֲã¼Ü¹¹ÔÚµÚÈý½×¶Î»ù±¾ÒѾ­³ÉÊì¡£ÒòΪÎÒÃÇҪ̽ÌÖµÄÊÇÓйØÁìÓòÇý¶¯Éè¼Æ£¨DDD£©µÄ·Ö²ã¼Ü¹¹£¬ËùÒÔÎÒÃÇÒÀÈ»ÐèÒª×ö½øÒ»²½²¹³ä¡£¾ßÌå°üÀ¨Á½·½ÃæµÄ²¹³ä£º

µÚËĸö½×¶Î£ºÃæÏò¶ÔÏóµÄ·¢Õ¹ÓëÓ¦Óã¬Õâ¸ö½×¶Î¶Ô×ܵIJã´Î»®·ÖûÓдóµÄ±ä»¯¡£¾ßÌåµÄ±ä»¯µÄÊÇÓйØÓ¦ÓòãÓëÁìÓò²ãµÄÄÚÈÝ£¬¸ü¾ßÌåµÄÀ´ËµÊÇÁìÓò²ãµÄ±ä»¯¡£ÃæÏò¶ÔÏóµÄ³öÏÖʹµÃ´ó¼Ò¿ªÊ¼Ê¹ÓÃÃæÏò¶ÔÏóÀ´Éè¼ÆÁìÓòÄ£ÐÍ¡£Õâ±íʾ£ºÓÉÊôÐԺͲÙ×÷Ëù±íʾµÄ¶ÔÏóÄ£ÐÍÓÃÀ´³éÏóÒµÎñÓòÖеĸÅÄîÄ£ÐÍ¡£Í¬Ê±ÕâÓÖ±íʾӦÓã¨ÒµÎñ£©Âß¼­²ãÖеÄÒµÎñÂß¼­Ò²½«±»¶ÔÏóÁìÓòÄ£ÐÍËù³Ðµ££¬Ó¦ÓòãÖ»ÐèÒª¿ØÖÆÓëЭµ÷ÓйضÔÏóÁìÓòÄ£Ð͵ÄÏà¹ØÂß¼­¡£·Ç³£ÐÒÔ˵ÄÊÇ£¬Eric ¶ÔÕâÒ»ÏÖÏóÖеĸü¶àϸ½Ú×öÁ˷dz£ÏµÍ³ÐԵIJûÊö£¬×îÖÕÐγɡ¶ÁìÓòÇý¶¯Éè¼Æ¡·Õâ±¾Êé¡£

µÚÎå¸ö½×¶Î£ºÇ°ºó¶Ë·ÖÀëºó¶Ô·Ö²ã¼Ü¹¹µÄÓ°Ïì¡£ÔÚǰºó¶Ë·ÖÀëµÄÏîÄ¿ÖУ¬±íÏֲ㱻ÍêÈ«µÄ´Óºó¶Ë°þÀë³öÀ´£¬ºó¶ËÖ»ÐèÒªÌṩ½Ó¿ÚÊý¾Ý£¬È磺RESTful , gRPC , Thrift , GraphQL ЭÒéµÄºó¶Ë½Ó¿Ú¡£´Ëʱºó¶Ë»¹ÊDz»ÊÇËIJã¼Ü¹¹ÄØ£¿Õâȷʵ°éËæ×ÅÁ½Ìõ·¢Õ¹Â·ÏߣºÒ»ÌõÊÇ·þÎñÓÚǰ¶ËµÄºó¶Ëģʽ£¨BFF£©¡£ÁíÒ»ÌõÊÇ»ùÓھۺ϶ÔÏóµÄ½Ó¿Úģʽ¡£ËüÃǵÄÇø±ðÔÚÓÚ BFF Ƶ·±±ä»¯£¬ºóÕß²»»áÒòΪǰ¶ËƵ·±±ä»¯¶ø±ä»¯¡£

 

   
3053 ´Îä¯ÀÀ       31
Ïà¹ØÎÄÕÂ

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

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

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