±à¼ÍƼö: |
´ËÎÄÖ÷Òª½éÉÜÁËOSI
Æß²ã¼Ü¹¹¡¢DDD²ÉÓõÄËÉÉ¢µÄ·Ö²ã¼Ü¹¹¡¢¼Ì³Ð·Ö²ã¼Ü¹¹µÈÏà¹ØÄÚÈÝ¡£
±¾ÎÄÀ´×ÔÓÚ΢ÐŹ«ÖÚºÅ:²»¹»¾ßÌ壬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼¡¢ÍƼö¡£
|
|
·Ö²ã¼Ü¹¹
ÔÚÓ¦ÓÃϵͳ¿ª·¢ÖУ¬²ÉÓÃÑϸñµÄ¡¢µ¥Ò»µÄ¡¢ÕæÕýµÄµÄ·Ö²ã¼Ü¹¹ÊÇ¿ÉÒԵ쬵«Êµ¼ÊÉÏÎÒÃÇÒѾ²ÉÓÃÁ˶àÖּܹ¹Ä£Ê½Éè¼ÆÏµÍ³¡£µ±¶àÖÖ²»Í¬·¶Ê½µÄ¼Ü¹¹»ìºÏÔÚÒ»Æð£¬Äã»á²»»á³öÏÖ¡°Ö¸Â¹ÎªÂí¡±µÄÏÖÏóÄØ£¿
Ñϸñ·Ö²ã¼Ü¹¹
ÔÚÑо¿·Ö²ã¼Ü¹¹Ê±£¬³£Í¨¹ý¸ÅÄîÐԵ͍Òå»ò OSI Æß²ãÓ¦Ó㨼ܹ¹£©À´ËµÃ÷»ò½âÊÍ·Ö²ã¼Ü¹¹£º
¼Ü¹¹Ä£Ê½ Layers ÓÐÖúÓÚ½«Ó¦ÓóÌÐò»®·ÖΪ¶à×é×ÓÈÎÎñ£¬ÆäÖÐÿ×é×ÓÈÎÎñ¶¼Î»ÓÚÌØ¶¨³éÏó²ã¡£

ͼƬȡ×Ô¡¶ POSA , Vol.I , p22 ¡·
×÷Ϊһ¸öÔÚÏîÄ¿ÖÐÒýÈë·Ö²ã¼Ü¹¹µÄÓ¦ÓÃÕߣ¬ÎÒÃÇÓ¦¸Ã´Ó¸ü¾ßÌåµÄ¹æ·¶À´ÊµÏÖ·Ö²ã¼Ü¹¹£º
ÏàÁÚ²ãÖ®¼ä±ØÐëÊǵ¥ÏòñîºÏ¡£ÉϲãÖ»ÄÜÒÀÀµÏ²㣬ϲãÓÀÔ¶²»ÄÜÒÀÀµÉϲ㡣
ÏàÁÚ²ãÖ®¼ä±ØÐëÊǵ¥ÏòͨÐÅ¡£ÉϲãÈ¥µ÷ÓÃϲãËùÌṩµÄ½Ó¿Ú£¬Ï²ãÓÀÔ¶²»Äܵ÷ÓÃÉϲãµÄ½Ó¿Ú¡£
¡¶ POSA , Vol.I ¡· ΪÎÒÃÇÌṩÁ˸ü¶àµÄʵÏֹ淶£¬È»¶øÎÒÒª½â¾öµÄÊÇÓйزãµÄµ¥ÏòÒÀÀµÎÊÌâ¡£ÒòΪÓÐһЩÈËÔÚʹÓ÷ֲã¼Ü¹¹Ê±£¬ÓÈÆäÊǽ«·Ö²ã¼Ü¹¹ÒýÈëµ½ÏîÄ¿µÄĿ¼½á¹¹Ê±£¬¶ÔÓÚijЩ¶ÔÏóµÄ»®·Ö£¨´ÓÊô£©´æÔÚһЩ»ìÂÒÎÊÌâ¡£
Èç¹ûÄãÓÐÐËȤÁ˽â¸ü¶à·Ö²ã¼Ü¹¹µÄʵÏֹ淶£¬¿É²Î¿¼£º¡¶ POSA , Vol.I ¡·µÚ¶þÊ®ÁùÒ³µ½µÚ¶þÊ®¾ÅÒ³Ïà¹ØÖªÊ¶¡£
ËÉÉ¢·Ö²ã¼Ü¹¹£¨Relaxed Layered System£©
ÔÚÁìÓòÇý¶¯Éè¼Æ£¨DDD£©ÖвÉÓõÄÊÇËÉÉ¢·Ö²ã¼Ü¹¹£¬²ã¼ä¹ØÏµ²»ÄÇôÑϸñ¡£Ã¿²ã¶¼¿ÉÄÜʹÓÃËüÏÂÃæËùÓвãµÄ·þÎñ£¬¶ø²»½ö½öÊÇÏÂÒ»²ãµÄ·þÎñ¡£Ã¿²ã¶¼¿ÉÄÜÊǰë͸Ã÷µÄ£¬ÕâÒâζ×ÅÓÐЩ·þÎñÖ»¶ÔÉÏÒ»²ã¿É¼û£¬¶øÓÐЩ·þÎñ¶ÔÉÏÃæµÄËùÓв㶼¿É¼û¡£
.png)
×¢Ò⣺ËÉÉ¢·Ö²ã¼Ü¹¹ÒÀÈ»Êǵ¥ÏòÒÀÀµ£¬±íÃ÷ÉϲãÖ»Äܵ÷ÓÃϲãµÄ·þÎñ£¬Ï²㲻Äܵ÷ÓÃÉϲãµÄ·þÎñ¡£
¼Ì³Ð·Ö²ã¼Ü¹¹£¨Layering Through Inheritance£©
ͬʱÔÚÁìÓòÇý¶¯Éè¼Æ£¨DDD£©ÖÐÒ²²ÉÓÃÁ˼̳зֲã¼Ü¹¹£¬¸ß²ã¼Ì³Ð²¢ÊµÏֵͲã½Ó¿Ú¡£ÎÒÃÇÐèÒªµ÷Õûһϸ÷²ãµÄ˳Ðò£¬²¢ÇÒ½«»ù´¡ÉèÊ©²ãÒÆ¶¯µ½×î¸ß²ã¡£
.png)
×¢Ò⣺¼Ì³Ð·Ö²ã¼Ü¹¹ÒÀÈ»Êǵ¥ÏòÒÀÀµ£¬ÕâÒ²Òâζ×ÅÁìÓò²ã¡¢Ó¦Óò㡢±íÏֲ㽫²»ÄÜÒÀÀµ»ù´¡ÉèÊ©²ã£¬Ïà·´»ù´¡ÉèÊ©²ã¿ÉÒÔÒÀÀµËüÃÇ¡£
ÁìÓò²ã 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 Ƶ·±±ä»¯£¬ºóÕß²»»áÒòΪǰ¶ËƵ·±±ä»¯¶ø±ä»¯¡£
|