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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Èí¼þ¿ª·¢¼Ü¹¹Ä£Ê½Ç³Ì¸£ºÒ»Ð©Ë¼¿¼ºÍʵ¼ù¼Ç¼
 
×÷Õߣº ˼ÇÝ
  1329  次浏览      30
 2021-12-23
 
±à¼­ÍƼö:
±¾ÎÄÖ÷ÒªÌÖÂÛµÄÊǾßÌåÃæÏò¿Í»§Ê¹ÓõÄÒµÎñ³¡¾°£¬ÉÙ²»Á˿ͻ§²Ù×÷½»»¥µÄÊÓͼ²ã£¨View£©,´Ó±íÏÖ²ãµÄMVC£¬Êµ¼Ê°¸Àý½áºÏ½²½â£¬Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£
±¾ÎÄÀ´×ÔÓÚ°¢Àï¼¼Êõ ,ÓÉ»ðÁú¹ûÈí¼þAlice±à¼­¡¢ÍƼö¡£

Ò» ±³¾°ºÍÎÊÌâ

ÎÒ¸öÈËÆ½Ê±»á±È½ÏÉ÷Ó᰼ܹ¹¡±Õâ¸ö´Ê

  • Ò»·½ÃæÊǾõµÃÒµ½çÓкܶà¼Ü¹¹´óʦºÍ¼Ü¹¹Ä£Ê½£¬¶øÎÒµÄÈÏÖªºÍʵ¼ùÓÐÏÞ£»
  • ÁíÒ»·½ÃæÊÇÒòΪÕâ¸ö´Ê¿´×Åͦ¸ß´óÉÏ¡¢ÓеãÎñÐ飬Èç¹û²»½áºÏʵ¼Ê³¡¾°µÄ¾ßÌåÎÊÌâÀ´ÌÖÂÛ£¬ÈÝÒ×ÏÝÈë¡°PHPÊÇ×îºÃµÄÓïÑÔ¡±ÕâÑùµÄ±çÂÛÈüÖС£¶ø²»Í¬³¡¾°ÖÐÓÖÓи÷×ÔµÄÎÊÌ⣬³ÌÐòÔ±ÃÇͨ¹ý×Ô¼ºµÄÀí½âºÍ˼¿¼¡¢Õë¶Ôʵ¼Ê³¡¾°¶ÔһЩ¼Ü¹¹Ä£Ê½½øÐÐÁËÀ©Õ¹Êµ¼ù£¬ÒÔ´ËÀ´½â¾öÓöµ½µÄÎÊÌ⣬Ҳ»á»ùÓÚͬһ¸öģʽÑÓÉì³öһЩÅÉÉú¸ÅÄî¡£

±øÎÞ³£ÊÆ£¬Ë®ÎÞ³£ÐΡ£ ËùÒÔ£¬ÎÒ¸öÈ˵Ĺ۵ãÊÇ£ºÒÔÒª½â¾öµÄÎÊÌâΪ³ö·¢µã£¬È¥ÌÖÂÛÎÒÃÇÒª²ÉÓõļܹ¹Ä£Ê½£¨¼¼Êõ·½°¸£©¡£

ÁíÍ⣬ÓÉÓÚÎÒÃÇÊÇÕ¾Ôںܶà¾ÞÈ˼ç°òÉϵģ¬ÌÖÂÛʱ¿ÉÒÔÕ¾ÔÚһЩÈçSOLIDµÈÈí¼þÉè¼Æ/¿ª·¢Ô­ÔòµÄ»ù´¡ÉÏ¡£Ð´ÕâÆªÎÄÕ£¬ÎÒÒ²ÊÇ´Ó½â¾öһЩÎÊÌâµÄÄ¿µÄ³ö·¢µÄ£º

  • ×î½üºÍÍŶÓͬѧÌÖÂÛÁËÏà¹Ø»°Ì⣬ËäÈ»´ó¶àÊýͬѧÔÚʵ¼ùÉÏ»ù±¾Ò»Ö£¬µ«¾ßÌåµ½»°Êõ¡¢Ãû´Ê¸ÅÄîºÍ¾ßÌåʹÓõÄÀí½âºÍʵ¼ùÉÏÓÐЩ²îÒ죨ÕâÊǺÜÕý³£µÄ£¬ÒòΪҵ½ç¶Ôͬһ¸öģʽµÄÀí½âºÍʵ¼ùÒ²²»Í¬£©¡£ÎÒ½áºÏһЩʵ¼Ê±àÂ볡¾°×öÁËÒ»·¬³ÂÊö£¬ÎªÁ˱ÜÃâºóÐøÖØ¸´´ó·Ñ¿ÚÉ࣬ËùÒÔ´òËãдÏÂÀ´£¬ÒÔºóÓÐÐèÒªÖ±½Ó·¢ÎÄÕÂÁ´½Ó¡£
  • ÓÉÓÚÎÒ¸öÈ˵ÄÈÏÖªºÍʵ¼ùÓÐÏÞ£¬ËùÒÔҲϣÍûÄÜÅ×£¨huan£©×©£¨ying£©Òý£¨lai£©Óñ£¨pen£©£¬ÈÃÎÒѧµ½¸ü¶à¡£
  • ËäȻͬһ¸ö¼Ü¹¹Ä£Ê½ÔÚ²»Í¬ÒµÎñ/¼¼ÊõÁìÓòµÄʵʩ»áÓÐÇø±ð£¬µ«Í¬Ò»¸öÍŶÓÄÚÓ¦¸Ã±£³ÖÒ»ÖÂÐÔ£¬ÒòΪÕâÑùÓÐÖúÓÚÈÕ³£µÄcode review¡¢¹¦ÄÜÄ£¿éµÄ½»½ÓbackupµÈ»î¶¯£¬ÓÈÆäÊÇÓÐÀûÓÚʹÓÃͳһµÄµ¥²â½¨Éè·½°¸À´±£ÕÏÎÒÃǵIJúÆ·ÖÊÁ¿¡£
  • ʵ¼ÊÎÊÌ⣺ÎÒ×î½üÔÚ¿ª·¢É̼Һϲ¢·¢»õµÄ¹¦ÄÜ£¬µ«ÓÉÓÚ֮ǰ»ù´¡·¢»õ¹¦ÄܵĽçÃæºÍÂß¼­²¢²»ÊÇÎÒ¿ª·¢µÄ£¬ËùÒÔÎÒÔÚÐÞ¸ÄÔ­ÓдúÂë¡¢Ö§³ÖÓзdz£¶àϸ½ÚÂß¼­µÄºÏ²¢·¢»õÄÜÁ¦Ê±£¬¾ÍÔÚµ£ÐĶÔÔ­Óз¢£¨zhong£©»õ£¨yao£©ÄÜÁ¦µÄÓ°Ïì¡£¶øÕâʱºò£¬Èç¹ûÓе¥²âµÄ±£ÕÏ£¬ÎҾͿÉÒÔ¸ü·ÅÐĵؽøÐй¦ÄÜÉý¼¶¸ÄÔìÁË ¡ª¡ª ±ð˵¸ü¸´Ôӵĺϲ¢·¢»õÄÜÁ¦ÁË£¬¶øÕâÀàËßÇóÔÚ¸´ÔӵĽ»Ò׳¡¾°ÀïºÜÆÕ±é¡£

ÌáÁ¶Ò»ÏÂÎÒÓöµ½µÄ¾ßÌåÎÊÌ⣺

ÔÚÓɲ»Í¬¿ª·¢ÈËÔ±³ÖÐøµü´ú¡¢½øÐй¦ÄÜÉý¼¶µÄÈí¼þ¿ª·¢»î¶¯ÖУ¬ÈçºÎ±£ÕϾßÓи´ÔÓÂß¼­µÄÉ̼Ҿ­Óª¹¤¾ßµÄ²úÆ·ÖÊÁ¿¡£

Èí¼þ¿ª·¢»î¶¯ÊÇÕû¸öÁ÷³ÌµÄºËÐÄ»·½Ú£º½ÓÊÕ²úÆ·ºÍÊÓ¾õÉè¼ÆÐèÇó/±ä¸ü×÷ΪÊäÈ룬ȻºóÊä³ö¿Í»§¿ÉÓõÄÖն˲úÆ·¡£

¶øÍ³Ò»µÄÈí¼þ¿ª·¢¼Ü¹¹Ä£Ê½£¬ÔòÊÇÎÒÃDZ£ÕÏÈí¼þ¿ª·¢ÖÊÁ¿µÄ»ù´¡¡££¨ÕâÀï¾Í²»¾ßÌåÕ¹¿ªWHYÁË£© ÓÉÓÚÌÖÂÛµÄÊǾßÌåÃæÏò¿Í»§Ê¹ÓõÄÒµÎñ³¡¾°£¬ÉÙ²»Á˿ͻ§²Ù×÷½»»¥µÄÊÓͼ²ã£¨View£©£¬ËùÒÔÎÒ´ÓMVC¿ªÊ¼Ì¸Æð¡£

¶þ ´Ó±íÏÖ²ãµÄMVC̸Æð

ËäÈ»ÎÒÆ½Ê±±È½ÏÉ÷Ó᰼ܹ¹¡±Õâ¸ö´Ê£¬µ«ÎÒÆ½Ê±Ï²»¶ËæÊÖÅÄһЩ½¨ÖþÎï¡£ ÒòΪ½¨ÖþÖ®ÃÀ£¬»áÈÃÎÒÁªÏëµ½Èí¼þµÄ¼Ü¹¹Ò²Ó¦¸ÃÓÐÃÀ¸Ð£¬±Ï¾¹Software ArchitectureÕâ¸ö¸ÅÄîÒ²ÊÇÆðÔ´ÓÚArchitecture¡£ Õâʱºò£¬¼Ü¹¹Õâ¸ö´Ê¾Í»á¸øÎÒÒ»ÖÖ½ÓµØÆøµÄ¸Ð¾õ£ºÓжàÉÙ¿éש£¬Ã¿¿éש×öʲôÓᢷŵ½ÄÄÀïÈ¥£¬Õâ¿éש ºÍ ÄÇ¿éשÔõôð¤ÔÚÒ»Æð»ò»¥ÏàÖ§³Å¡£ µ±È»£¬ÓÉÓÚÈí¼þµÄ¿ÉÒÆÖ²ÐÔ¡¢¿É¸´ÓÃÐÔ£¬´ÓijЩ½Ç¶ÈÀ´½²£¬Èí¼þ¼Ü¹¹Ïà±È½¨Öþ¼Ü¹¹ÓÐÆä¸ü¸´Ôӵĵط½¡£ MVCµ®ÉúÖÁ½ñÒѾ­³¬¹ý40ÄêÁË£¨Since 1979£©£¬10¶àÄêǰ¾ÍµÃµ½¹ýºÜ¹ã·ºµÄÌÖÂÛºÍʵ¼ù£¬´©Ô½Ê±¿Õµ½½ñÌì¿Ï¶¨ÓÐÆä·´´àÈõÐÔºÍÄÚÔÚºËÐļÛÖµ¡£ ËäÈ»Èç½ñÕ§¿´ÆðÀ´ºÃÏñÒѾ­¹ýÆø¡¢±»ÌÖÂÛ¹ýǧ°Ù±éÁË£¬µ«ÈÔÈ»Óкܶà³ÌÐòÔ±»áÓв»Í¬Àí½âºÍ¿´·¨£¬»ò¶à»òÉÙ¡£ÕâÊǺÜÕý³£µÄ£¬ÉÏÃæÒ²Ìáµ½Á˲¿·ÖÔ­Òò£¬ÕâÀï¾ßÌåÔÙÕ¹¿ªÏ¡£

1 MVCÔÚ¾­µäÈý²ã¼Ü¹¹ÀïµÄλÖÃ

MVCÊÇÒ»ÖÖͨÓüܹ¹Ä£Ê½
  • ÔçÆÚPCʱ´úÓ¦ÓÃÔÚ×ÀÃæ¿Í»§¶Ë£¬
  • ºóÀ´ÔÚWebʱ´ú±äµÃÁ÷ÐУ¨ÎÒÒÔǰдPHPÒ²ÓùýÏà¹ØMVC¿ò¼Ü£©£¬
  • Èç½ñÔÚÒÆ¶¯»¥ÁªÍøÊ±´úÒ²µÃµ½¹ã·ºÓ¦Óá£
ÉÏÃæÕâÈý¸ö³¡¾°µÄÓ¦Ó㬶¼ÊÇÃæÏò¿Í»§µÄ£¬ÐèÒª½»»¥±íÏֵġ£

´ÓMVCÃüÃûÖеÄView£¨ÊÓͼ£©Ò²¿ÉÒÔ¿´³ö£¬MVCģʽӦÓÃÔÚÈí¼þϵͳ¼Ü¹¹ÀïµÄ±íÏֲ㡣

ÔÚÒµ½çij֪Ãû¹«Ë¾µÄ¹Ù·½ÎĵµÀҲÃ÷È·°ÑMVC·ÅÔÚWeb Presentation PatternsÏ¡£

ÎÒÖ®ËùÒÔûÓÐÔÚÉÏͼÖжÔM-V-CÌí¼Ó¼ýÍ·ÏßÌõ£¬ÊÇÒòΪÔÚÕâÒ»µãÉÏ£¬²»Í¬³ÌÐòÔ±Ò²Óв»Í¬Àí½âºÍʵ¼ù¡£

ÕâÊǵÚÒ»¸öÐèÒªÃ÷È·µÄµã£ºMVC¼Ü¹¹Ä£Ê½ÔÚ¶à²ãϵͳ¼Ü¹¹ÀïµÄÓ¦Ó÷¶Î§¡£

×ó²à ÒµÎñ±íÏÖ²ã-ÒµÎñ·þÎñ²ã-»ù´¡·þÎñ²ã ÊÇÒÆ¶¯¶ËÈý²ã¼Ü¹¹Ä£Ê½£¬Î´Éæ¼°µ½ C/S ½»»¥£»ÓÒ²àÊÇWeb B/S³¡¾°µÄÈý²ã¼Ü¹¹Ä£Ê½¡£

ÒòΪÓÐЩӦÓûá±È½Ï¼òµ¥£¬¸ù±¾²»ÐèÒªÒµÎñ·þÎñ»ò»ù´¡·þÎñ²ã£¬´¿´â¿¿Ò»¸öMVC£¨»òÕßVC£©¾ÍÄܽ»¸¶³öÒ»¸öMobile/Web App£»

¶øÇÒÔÚһЩҵÎñϵͳÀWebǰ¶Ë/×ÀÃæ¿Í»§¶Ë/ÒÆ¶¯App Ò²¿ÉÄܻᱻ¼ò»¯Îª ´óǰ¶Ë/´óÖն˱íÏֲ㣻

ËùÒÔ¿ÉÄÜ»ùÓÚ²»Í¬ÐÅÏ¢£¬²»Í¬³ÌÐòÔ±¶Ô´Ë»áÓв»Í¬ÈÏÖª¡£ µ«Ëæ×ÅÓû§ÖÕ¶ËÓ¦ÓõÄÖØÒªÐԺ͸´ÔӶȵÄÌáÉý£¬ÒѾ­´Ó¼òµ¥Ó¦Ó÷¢Õ¹µ½¸´ÔÓ¶àÍŶÓЭͬµÄƽ̨ÐÍ»òº½Ä¸¼¶Ó¦Ó㬽ö¿¿Ò»¸öMVCÀ´Íê³É½»¸¶ÊDz»ºÏÊʵġ£ ÎÒÃÇÒ²¿ÉÒÔ·´¹ýÀ´Ï룬³ÌÐòÔ±»á°ÑÒÔÏ´úÂë·ÅÔÚ¿Í»§¶Ë´úÂëµÄÄÄÒ»²ã£º

  • ¶ÔWebÒýÇæµÄÀ©Õ¹Âß¼­¡£
  • ͨÐÅЭÒéµÄ½á¹¹¶¨Ò壬ÒÔ¼°ÏàÓ¦µÄsocketÁ¬½ÓºÍͨÐÅ´úÂë¡£
  • Ò»¸öÒµÎñÏà¹ØÇÒUIÎÞ¹ØµÄÆ½Ì¨¿ª·ÅÄÜÁ¦¡£
  • Crash²¶»ñ¡¢¿¨¶Ù¼à¿Ø¡¢ÈÕÖ¾ÂñµãµÈ¹¦ÄÜʵÏÖ£¬±ÈÈçAndroidÔÚ×öAPMÏà¹ØÊÂÇéʱ»á²ÉÓÃAOP·½Ê½£¬ÀûÓÃASM¡¢AspectJµÈ·½°¸À´×ö×Ö½ÚÂë²å×®¡£
  • ¡­¡­

2 Òµ½ç»ùÓÚMVCģʽµÄ²»Í¬Êµ¼ù

Ç°ÃæÌáµ½²»Í¬³ÌÐòÔ±¶ÔMVCģʽµÄÀí½âºÍʵ¼ù´æÔÚ²îÒì

Òµ½ç´ó³§ÒàÈ»£¬ÒÔÏ»á½áºÏÒµ½çһЩ֪ÃûÇÒÓÐÓ°ÏìÁ¦µÄ¹«Ë¾ÔÚMVCģʽÉϵÄʵ¼ù£¬×ö½øÒ»²½µÄÕ¹¿ªÌÖÂÛ¡£

ÖªÃû¹«Ë¾A

ÖªÃû¹«Ë¾AÔÚÖ¸µ¼¿ª·¢ÕßʹÓÃMVCʱ£¬ÍƼöÏÂͼ·½Ê½£º

¿ÉÒÔ¿´³öÔÚËûÃǵÄʵ¼ùÉÏ£º

  1. Controller¿ÉÒÔÒýÓÃViewºÍModel¡£
  2. View¿ÉÒÔÒýÓÃModel¡£
  1. ÕâÀïµÄModelÇãÏòÓÚÊÇPassive¡£

ͬʱ£¬ËûÃǽ¨Ò飺

  • ÔÚÇ¿ÀàÐÍÊÓͼ³¡¾°£¬¿ØÖÆÆ÷´ÓÄ£ÐÍ´´½¨²¢Ìî³äViewModelʵÀý£¬¸ÃViewModel ʵÀý°üº¬ÒªÔÚ¸ÃÊÓͼÉÏÏÔʾµÄÊý¾Ý¡£
  • µ±¿ØÖÆÆ÷ÓÉÓÚÔðÈιý¶à¶ø±äµÃ¹ýÓÚ¸´ÔÓʱ£¬Ò²¾ÍÊÇÒµ½çÏ·³ÆµÄ¡°MVC means Massive View Controller¡±£¬ÐèÒª½«ÒµÎñÂß¼­´Ó¿ØÖÆÆ÷ÒÆ³ö²¢ÍÆÈëÓòÄ£ÐÍÖС£

ÖªÃû¹«Ë¾B

˵µ½Massive View Controller£¬ÖªÃû¹«Ë¾BÔÚÒÆ¶¯»¥ÁªÍø·½ÐËδ°¬µÄʱºò£¬ÍƼöÏÂͼËùʾµÄMVCʵ¼ù·½°¸£º

ÉÏͼ³ÊÏÖ³ö£º

  1. ControllerÒýÓÃViewºÍModel¡£
  2. Modelͨ¹ýһЩËÉñîºÏ·½Ê½À´´¥´ïController£¬Èç¹ã²¥Í¨Öª¡¢callbackµÈ£¬Çý¶¯Controller×ö³öÏìÓ¦¡£
  3. Viewͨ¹ý´úÀíģʽµÈ·½°¸ÈõÒÀÀµController£¬ÓÉController¶Ô¸÷ÖÖÓû§²Ù×÷¡¢UIäÖȾËßÇó×ö³öÏìÓ¦¡£
  4. ¶øViewºÍModelÖ®¼äÊǸôÀëµÄ£¬Model±ä»¯ºó¶ÔViewµÄ¸üвÙ×÷È«²¿ÓÉController¸ºÔð¡£
²»¹ýÏàÓ¦µÄ¹Ù·½ÎĵµÒѾ­±»ÉùÃ÷ÊǹýÆÚÎĵµÁË£¬²¢±¸×¢²»Ò»¶¨ÊÇĿǰµÄ×î¼Ñʵ¼ù¡£

Êǵģ¬Ëæ×ÅÒÆ¶¯»¥ÁªÍøÅ·¢Õ¹£¬Ê®ÄêǰµÄ¡°×î¼Ñʵ¼ù¡±±»Ò»Â·¶àÖÖÌôÕ½ ¡ª¡ª ÔÚ²ÉÓÃÕâÖÖ·½°¸µÄ¿ª·¢ÁìÓòÖУ¬ÈçºÎÖØ¹¹Massive View ControllerΪLighter View ControllerÒѾ­³ÉΪÁËÒ»¸öרÌâ¡£

¶Ô±ÈºÍ˼¿¼

AºÍBµÄÒìͬµã

  • Ïàͬµã£ºModel°üº¬ ËùÐèµÄÊý¾Ý½á¹¹·â×°£¬ÒÔ¼°ÏàÓ¦Êý¾Ý²Ù×÷µÄ·½·¨¶¨Òå¡£¼´Data + ±¾µØ»òÔ¶¶ËµÄCURD¡£
  • ²îÒìµã£ºÔÚÖªÃû¹«Ë¾A¸øµÄͼÖУ¬View¿ÉÒÔÒýÓÃModel£¬¶øÔÚÖªÃû¹«Ë¾B¸øµÄͼÖÐÔò²»ÐС£

һЩÎÊÌâºÍ˼¿¼

  • ViewÓмýÍ·Ö¸ÏòModel£¬ÕâÀïµÄÒýÓùØÏµÊÇָʲô£¿ÊÇView³ÖÓÐModel.DataÊý¾Ý¶ÔÏ󣬻¹ÊÇViewµ÷ÓÃModel.CURD·½·¨¡£
  • ControllerµÄ±¾ÒâÊÇControing Logic£¬ÄdzýÁËViewControllerÍ⣬ÊÇ·ñ»¹¿ÉÒÔÓÐÆäËüµÄ XxController£¬±ÈÈç DataSourceController¡¢NotificationController£¿
  • ´ÓÃüÃûÉÏ¿´£¬¼ÈÈ»ViewController ¼ÈÓÐView ÓÖÓÐController£¬ÄÇΪʲô°ÑËü·ÅÔÚ CÀïÃæ£¬¶ø²»·ÅÔÚVÀïÃæÄØ£¿±ÈÈçµ±ÎÒÃÇÔÚiOS/Android¿ª·¢ÖÐÒýÈëMVVMģʽºó£¬ViewController»òActivityÊôÓÚM-VM-VµÄÄIJ¿·ÖÄØ£¬´úÂë·ÅÔÚÄĸöĿ¼ÏÂÄØ£¿
  • ÎÒÓÐÀàÃûʹÓÃViewModelºó׺¾Í´ú±íÎÒʹÓÃMVVMģʽÁËÂð£¿

Martin Fowler

×÷Ϊ

  1. ¡¶Öع¹ : ¸ÄÉÆ¼ÈÓдúÂëµÄÉè¼Æ¡·¡¢¡¶ÆóÒµÓ¦Óüܹ¹Ä£Ê½¡·µÈÖø×÷µÄ×÷Õߣ»
  2. Ãô½ÝÈí¼þ¿ª·¢ÐûÑÔ´´×÷ÕßÖ®Ò»£»
  3. MVVMģʽµ®Éúʱ²Î¿¼ÒýÓõļ¼Êõר¼Ò¡£

Martin Fowler¸øµÄMVCģʽͼÈçÏ£º

ºÍÉÏÃæÖªÃû¹«Ë¾AºÍBµÄͼ£¬ÓÖ²»Ò»ÑùÁË£¬ ²»¹ýËûÕâÀïÒ²ÊÇÈÏΪView¿ÉÒÔÒýÓÃModelµÄ¡£

MVCºÍDDD

Martin FowlerºÍ¡¶ÁìÓòÇý¶¯Éè¼Æ¡·×÷ÕßEric EvansÒ²ÌÖÂÛ¹ýMVCÖÐModelµÄÉè¼ÆÀíÄ

  • ƶѪģÐÍ£º½«Model·ÖΪ¼ò£¨pin£©µ¥£¨xue£©µÄModelÊý¾Ý¶ÔÏ󣬺ʹ¦Àí²Ù×÷Êý¾Ý¶ÔÏóµÄService/Manager/BizLogicµÈ¡£
    • ʾÀý£ºÎªaPersonÐÞ¸Äname£¬ÔòÓÉ CitizenService.changeNameOfPerson( aPerson ) ÕâÖÖ·½Ê½À´ÊµÏÖ¡£
  • ³äѪģÐÍ£º½«¶ÔÓ¦ÁìÓòµÄ´¦ÀíÂß¼­·Åµ½ÁìÓòÄ£ÐÍÖУ¬Ê¹µÃÕâ¸öÁìÓòÄ£Ð͸ü±¥£¨chong£©Âú£¨xue£©¡£
    • ʾÀý£ºaPersonҪˢÑÀ£¬ÔòÓÉ aPerson.brushTeeth() À´ÊµÏÖ¡£

    • ²¹³ä£º³äѪģÐ͸üÓÐÃæÏò¶ÔÏó±à³ÌµÄζµÀ£¬ÓÈÆäÊÇ´îÅä½»Ò×ÁìÓòµÈÒµÎñ³¡¾°£¬¸üÓÐÌå¸Ð¡£²»¹ýÉÔ΢ϸÏëһϣ¬¿ÉÄܾͻᷢÏÖDDD¶ÔÉè¼ÆµÄÒªÇó»á¸ü¸ß£¬´Ó¶ø¶ÔÑз¢ÖÜÆÚºÍÖÊÁ¿±£ÕÏÌá³öÁËеÄÒªÇ󣬲¢ÇÒ¿ÉÄÜÒýÆð¶ÔÏÖÓÐϵͳµÄ´ó¹æÄ£Öع¹¡££¨ºÐÂíµÄDDDʵ¼ù£©

Ò²¾ÍÊÇ˵£¬´óµ½MVC¸÷¸öÄ£¿éµÄÒÀÀµÒýÓùØÏµ£¬Ï¸µ½ModelÖеĴúÂëÉè¼Æ·½Ê½£¬Òµ½ç¶¼Óв»Í¬µÄÀíÄîºÍʵ¼ù¡£

Java Web¿ª·¢ÁìÓòÒ²¶ÔModelµÄÉè¼Æ²úÉú¹ý·Ç³£¼¤ÁÒµÄÌÖÂÛ¡£

С½á

ÏÈÅ׿ª¾ßÌåÄ£¿éµÄ´úÂëÉè¼Æ·½°¸£¬»ùÓÚÒÔÉϼ¸ÖÖÒµ½ç´ó³§»òר¼ÒµÄÃèÊö£¬ÎÒС½áÁËÒÔÏÂÕâÕÅͼ²¢±ê×¢ÁË´ý½âÎÊÌ⣺

ÎÊÌâÒ»£ºÈçºÎ½â¾öMVCÖÐControllerµÄÅòÕÍÓ·Ö×ÎÊÌ⣿

Òª»Ø´ðÈçºÎ½â¾ö£¬ÐèÒªÏÈ˼¿¼ÎªÊ²Ã´ÅòÕÍ¡£ ÎÊÌâ¶þ£ºViewÄÜ·ñÒýÓÃModel£¿

  • Òª»Ø´ðÄÜ·ñÒýÓã¬ÐèÒªÏȶ¨ÒåÒýÓùØÏµÊÇʲô¡£
    • ÊdzÖÓжÔÏ󣬻¹Êǵ÷ÓÃCURD½Ó¿Ú²Ù×÷¶ÔÏó¡£
    • ÓÖ»òÕßÕâÁ½ÕßûÓбØÒªÇø·Ö£¬ÒòΪ³ÖÓеĶÔÏó±¾Éí¾Í¿ÉÄÜ´øCURD½Ó¿Ú¡£
  • ²Î¿¼ÉÏÃæÏà¹Ø×ÊÁÏ£¬Ä¿Ç°Òµ½çÓеÄÖ§³Ö¡¢Óеķ´¶Ô¡£

ÎÊÌâÈý£º´æÔÚView -> Model£¬ÄÇôÊÇ·ñ¿ÉÒÔ·´¹ýÀ´´æÔÚ Model -> View£¿

ºÍÎÊÌâ¶þÔÚÃèÊöÉÏÏà·´µ«ÓÖÓйØÁª£¬Èç¹û¶ÔÎÊÌâÔÙ½øÒ»²½ÌáÎʵϰ£º

  • ʹÓà -> ÒýÓùØÏµ£¬ÊÇΪÁ˽â¾öʲôÎÊÌ⣿
  • ʹÓà -> ÒýÓùØÏµ£¬»á²úÉúʲôÎÊÌ⣿

ÈçͬÎÄÕ¿ªÍ·Ëù˵£¬ÒÔÉÏÎÊÌâÐèÒª½áºÏ¾ßÌ峡¾°À´Õ¹¿ª£¨¼û ʵ¼Ê°¸Àý½áºÏ£©£¬¾¡Á¿´ÓÎñÐéµ½Îñʵ¡£

3 Redux-like Architecture and Framework

Ëæ×Åǰºó¶Ë·ÖÀëµÃ¸ü³¹µ×£¬ÖÕ¶ËÉ豸ÐÔÄܺÍÓû§ÌåÑéÖØÒªÐÔµÄÌáÉý£¬Ç°¶ËÁìÓòÒ²µÃµ½ÁËÅ·¢Õ¹£¬¿ª·¢·½Ê½Ò²ÓÐÁ˱ȽϴóµÄ±ä»¯£¬MVC-like·½Ê½²»ÔÙÊÇÖ÷Á÷£º

  • UI¿ª·¢·½Ãæ´ÓÔçÆÚµÄÃüÁîʽµ½ÏÖÔÚµÄÉùÃ÷ʽ¡£
  • ÕûÌåÓ¦ÓúÍÒµÎñÂß¼­ÊµÏÖ·½Ã棬´ÓÔçÆÚµÄOOPд·¨£¬×ªÏò»ùÓÚFPµÄÏìӦʽ±à³Ì¡£±ÈÈçReduxµÄÊý¾ÝÁ÷¡¢ReactµÄHookÌØÐԵȡ£
  • ¸÷ÖÖ¿ò¼ÜÅ·¢Õ¹£¬Ò»Ð©¸ÅÄîºÍģʽµÄÌá³ö¡¢Êµ¼ùÓ¦Ó÷½Ã棬ÎÒ¸öÈËÈÏΪÊÇÁìÏȲ¢Ó°Ïì¿Í»§¶ËµÄ¡£
  • ÆäÖÐReduxÊÇÒ»¸ö¾­µä°¸Àý£¬²¢ÇÒÎÒ¾õµÃRedux¹Ù·½Ò²Í¦¿ª·Å°üÈݵ쬱ÈÈçDan AbramovдµÄ¡¶You Might Not Need Redux¡·¡£

ºÍMVCÑÓÉìÅÉÉú³öµÄMVC FamilyÒ»Ñù£¬ReduxÌá³ö»òÖØÐ´ø»ðÁËÊý¾ÝÁ÷¡¢×´Ì¬¹ÜÀíµÈ¸ÅÄ¿ªÊ¼Ó°ÏìÆäËüƽ̨ÁìÓò£¬²¢µ®ÉúÁËһЩ¿ò¼Ü¡£

±ÈÈçReSwift¡¢swift-composable-architecture£¬ÒÔ¼°SwiftUIÀïµÄState and Data Flow¡£

ËäÈ»ÎÒҲд¹ýµãReact£¬µ«²¢Ã»ÓÐÔõôʵ¼ù¹ýRedux¡£

²»¹ýÕâЩ±ä»¯ºÍÓ°Ï죬ÊÇÎÒÃÇÔÚ½â¾öÎÊÌâµÄ¹ý³ÌÖÐÐèÒª½áºÏ¿¼Âǵġ£

Èý ʵ¼Ê°¸Àý½áºÏ

1 ³£¼ûµÄÊý¾Ý½á¹¹¶¨ÒåºÍʹÓÃ

³ÌÐò = Êý¾Ý½á¹¹ + Ëã·¨¡£ ¡ª¡ª Nicklaus Wirth£¬PascalÖ®¸¸£¬Í¼Áé½±»ñµÃÕß

Õâ¾ä»°Õ§¿´ÆðÀ´¿ÉÄÜ»áÓеãÃæÏò¹ý³ÌÉè¼ÆµÄ¸Ð¾õ£¬µ«OOPÖеĶÔÏóÆäʵҲÊÇÓÉÊý¾Ý+·½·¨×é³É£¬¶øFPÔò¸ü²»ÓÃ˵ÁË¡£

ÔÚ±àÂ뿪·¢»î¶¯ÖУ¬»á´æÔÚÒÔÉÏ3ÖÖÊý¾Ý½á¹¹¶¨ÒåºÍʹÓ÷½Ê½£º

  1. Ô­ÉúÊý¾Ý½á¹¹£¬±ÈÈçlist/array¡¢map/dictionary¡¢tupleµÈ¡£

  2. ÀàËÆMyContactµÄÊý¾Ý½á¹¹¶¨Ò壬ÓÉ·þÎñ¶Ë·µ»ØµÄÊý¾Ý½øÐÐת»¯£¬²¢¿ÉÄܸù¾ÝÒµÎñÂß¼­°´Ðè¼ÓÉÏһЩ±ê־λ¸øControllerÏû·Ñ¡£

  3. ÀàËÆContactViewModelÕâÑùµÄ´¿´âΪÊÓͼView·þÎñµÄÊý¾Ý½á¹¹¶¨Òå¡£
²¹³ä£º £¨1£©MyContact ºÍ ContactViewModel Ö»ÊÇÌØÒâÇø·ÖµÄÃüÃû£¬Êµ¼ÊÉÏ MyContact Ò²¿ÉÒÔÊÇ´¿´âΪÊÓͼView·þÎñµÄÊý¾Ý½á¹¹¶¨Òå¡£ £¨2£©µ«ÊÇ£¬ºÏÊʵÄÃüÃûÓÐÖúÓÚ°ïÖúÎÒÃÇ˼¿¼ºÍ±àÂ룬´Ó±í´ïÉϳÊÏÖ³öÎÒÃǵÄÇãÏòºÍÖØµã¡£ "There are only two hard things in Computer Science: cache invalidation and naming things." ¡ª¡ª Phil Karlton

2 ³£¼ûµÄ¶à¸´ÔÓ¿¨Æ¬µÄÁÐ±í³¡¾°

Õâ¸ö³¡¾°¿ÉÒÔ²¿·Ö»Ø´ðÎÊÌâÒ»£ºÎªÊ²Ã´Controller»áÅòÕÍ£¬ÒÔ¼°ÈçºÎ½â¾ö¡£

ÆäËü²¿·Ö´ð°¸ÔòÂäÔÚ¸´ÔÓÒ³Ãæ³¡¾°µÄ¶àdelegate¡¢target-action¡¢notification-observerµÈÊÓͼ½»»¥ÏìÓ¦µÄ´¦ÀíÂß¼­ÉÏ¡£ ÎÒÈÏΪ£¬Ö®Ç°·´¶ÔViewÒýÓÃModel£¬¾ÍÊǵ¼ÖÂMVC±ä³ÉMassive View-ControllerµÄÒ»¸öÔ­Òò¡£ ÁíÒ»¸öÔ­ÒòÎÒÈÏΪÊǹ¤¾ßÁ´Ö»ÌṩÁËViewControllerÕâÑùµÄControllerÄ£°å£¬Òþʽ½Ìµ¼¿ª·¢Õß¶¼ÔÚÕâÀïд´úÂë¡£

ÕâÒ²¿ÉÄÜÊÇÒòΪʮ¼¸ÄêÇ°ÒÆ¶¯»¥ÁªÍø»¹Ã»·¢Õ¹ÆðÀ´£¬Òƶ¯AppµÄ¸´ÔӶȵͣ¬ËùÒÔÌṩÁËÔÚµ±Ê±¼òµ¥¹»Óõķ½°¸¡£

µ±Ö»ÄÜÓÉController ³ÖÓÐ-> ModelµÄʱºò£¬ÄÇôÔڶิÔÓ¿¨Æ¬µÄÁÐ±í³¡¾°ÖУ¬±ØÐëÓÉControllerÀ´¸üÐÂÿ¸öViewµÄÊôÐÔ/״̬¡£

  1. MyViewControllerÐèҪΪContactCell¸üÐÂËüµÄ¸÷ÖÖÏà¹ØÊôÐÔ£¬ÀàËÆµÄ»¹ÓÐAddressCell¡¢PackageCellµÈ¡£
  2. MyViewControllerÔÚ¸üÐÂAddressCellչʾǰ£¬¿ÉÄÜ»¹ÐèÒªÏÈΪËü¼ÆËã³öºÏÊʵĸ»Îı¾Õ¹Ê¾ÄÚÈÝ¡£
  3. MyViewControllerÐèÒªÏìÓ¦²»Í¬CellµÄµã»÷½»»¥ÐÐΪ£¬°üº¬µ«²»ÏÞÓÚ°´Å¥µã»÷¡¢ÊäÈë¿ò±ä»¯¡¢¸»Îı¾Ìø×ª¡¢¼üÅÌÆðÂäµÈ¡£
  4. MyViewControllerÐèÒªÏìÓ¦CollectionView/TableViewµÄDataSource/Delegate¸÷ÖÖ·½·¨ÊµÏÖ¡£
  5. MyViewControllerÐèÒªÏìÓ¦Model²ãµÄ±ä¸ü֪ͨ£¬»òÕßÊÇÁíÍâÒ»¸öViewControllerÅ×¹ýÀ´µÄ¹ã²¥Í¨Öª¡£
  6. ¡­¡­

È»ºóMyViewController¾Í±¬Õ¨ÁË¡£ Õë¶ÔÕâÖÖ³¡¾°£¬ÎҵĽⷨÊÇ£º

  1. ͨ¹ýÈÃView->Model£¬»ùÓÚ¹¤³§Ä£Ê½£¬°Ñ×é¼þ»¯Cell»ùÓÚÊý¾Ý¸üеIJ¼¾ÖÂß¼­½»¸øView¸ºÔð£¬ÈçcontactCell.configUIWithModel( contactModel )¡£ÕâÑùÓеãÀàËÆÉÏÃæDDDÌáµ½µÄ³äѪModel£¬¾ß±¸¸ßÄÚ¾ÛµÄÌØµã£¬´øÀ´ºÃ´¦£º
    1. ºÍ¼õÇá¿ØÖÆÆ÷¸ºµ£¡¢ÍÆÈëÓòÄ£ÐÍÀàËÆ£¬Í¨¹ý°ÑÊý¾ÝÇý¶¯²¼¾ÖµÄ´úÂëÍÆÈë×é¼þÓòÄÚ£¬¼õÇáÁËMyViewControllerµÄ¸ºµ£¡£

    2. ÀûÓÚ×öÕⲿ·Ö×é¼þ»¯CellµÄUI²âÊÔ¡£

    3. ÀûÓÚÕâЩ×é¼þ»¯ÊÓͼ¸´Óõ½ÆäËü³¡¾°£¬±ÈÈç½»Ò×¹ÜÀí³¡¾°µÄ¶©µ¥¿¨Æ¬¿ÉÒÔ¸´Óõ½ËÑË÷³¡¾°ÖУ¬²»ÓÃÔÚSeachViewControllerÀï¸´ÖÆÕ³ÌùÒ»´ó¶Ñ´úÂ룬ֻÐèÒª´ÓModelȡһ¸öÊý¾Ý¶ÔÏ󶪸ø×é¼þ»¯Cell¼´¿É¡£
  1. »ùÓÚViewController£¬²ð·Ö³ö²»Í¬Ö°ÔðµÄÀ©Õ¹£¬±ÈÈçMyViewController+Delegateרß´ÔÓÏìÓ¦´úÀíʼþ´¦Àí¡£
  2. ¶¨Òå³öÆäËüÀàÐ͵ÄController£¬±ÈÈçMyDataSourceController£¬×¨ÃÅΪTableViewÌṩÊý¾ÝÔ´£¬¿ÉÒÔÀà±È²Î¿¼AndroidÖÐListViewµÄAdapter+ViewHolder¡£

¹¤³§Ä£Ê½Ï£¬²úÆ·µÄË¢Æá¡¢ºæ¸É¡¢Ó¡»¨µÈ²Ù×÷»áÔÚÄÚ²¿Íê³É£¬²»»á¶ªÒ»¸öÄ£ÐÍÈÿͻ§È¥×Ô¼ºÌùlogo¡£MVCµÄÿһ²¿·Ö¶¼¿ÉÒÔÓò»Í¬µÄÉè¼ÆÄ£Ê½À´×éºÏʵʩ£¬ÊµÏÖ½âñî»ò¶¯Ì¬Áé»îµÄÄ¿±ê¡£

¶ÔÓ¦ÏÂͼ£º

µ½ÕâÀïÒѾ­»Ø´ðÁËÇ°ÃæµÄÎÊÌâÒ»ºÍÎÊÌâ¶þ¡£

¸ü¶à½â·¨¿ÉÒԲο¼ÉÏÃæÌáµ½µÄÏà¹Ø½¨Ò飬±ÈÈçlighter view controllers ÕâÀï²ÉÓÃÁË VIew -> Model µÄ·½°¸£¬ÓÃÀ´²ÎÓë½â¾öMassive View-ControllerµÄÎÊÌ⣬²¢ÇÒÈÃView¸üÈÝÒ׸´ÓúÍ×öUI²âÊÔ£¬´øÀ´Á˺ô¦¡£ ¿ÉÒÔ½áºÏÇ°ÃæÌáµ½µÄ

¡°µ±¿ØÖÆÆ÷ÓÉÓÚÔðÈιý¶à¶ø±äµÃ¹ýÓÚ¸´ÔÓʱ£¬ÐèÒª½«ÒµÎñÂß¼­´Ó¿ØÖÆÆ÷ÒÆ³ö²¢ÍÆÈëÓòÄ£ÐÍÖС£¡±

ÔÙ½øÒ»²½ÌÖÂÛÏ¡£ ÎÒµÄÀí½âºÍ¾ÙÀý£º

  1. ´æÔÚÒ»¸öÊäÈë¿ò£¬ÈÃÓû§Ìá½»ÎïÁ÷µ¥ºÅ¡£
  2. Óû§ÔÚÊäÈë¹ý³Ì»òÕßÍê³ÉÊäÈëºó£¬ÓÉViewͨ¹ýdelegateģʽ·ÓɸøController×öУÑ飬¶øController¿ÉÄÜ»¹Òª½øÒ»²½ÒÀÀµModelÈ¥×ö¸üÍêÕûµÄУÑ飨ÈçÍøÂçÇëÇóµ½·þÎñ¶Ë£¬ÒòΪÎïÁ÷µ¥ºÅµÄ¹æÔòºÜ¶à¶øÇÒ¿ÉÄܶ¯Ì¬¸üУ©¡£
  3. µ±ControllerÔðÈιý¶à¡¢´úÂëÅòÕÍ¡¢¹ýÓÚ¸´ÔÓʱ£¬¾Í½«ÎïÁ÷µ¥ºÅÕâ¿éÒµÎñÂß¼­ÍÆÈë ÎïÁ÷£¨µ¥ºÅ£©ÓòÄ£ÐÍÖУ¬¼´ÓÉViewÖ±½Óͨ¹ýdelegateģʽ½»¸ø LogisticsModelÀ´×öУÑé¡£
  4. Ò²ÊÇ View -> Model ¡£

²»Ò»¶¨¶Ô£¬Å×£¨huan£©×©£¨ying£©Òý£¨lai£©Óñ£¨pen£©¡£

ÄÇô£¬´æÔÚVIew -> Model£¬ÓÐʲô»µ´¦Âð£¿

3 Ò»¸öKotlin¿çƽ̨³¡¾°°¸Àý

ÕâÀï²»¾ßÌåÕ¹¿ª½²Kotlin¼°Æä¿çƽ̨Ïà¹ØÄÚÈÝ£¬Ö»ÊÇÃèÊö´ÓMVCģʽ×ö¿çÆ½Ì¨Ç¨ÒÆÊ±Óöµ½µÄÎÊÌâ¡£

ÕâÀïµÄViewController/Activity·ÅÔÚÄÄÀҲºÍÉÏÃæµÄÒ»¸öÎÊÌâÏàºôÓ¦¡£

ËäÈ»D-KMPÖ÷ÕÅͨ¹ýȫй¹½¨¹¤³Ìд´úÂëµÄ·½Ê½À´Êµ¼ù£¬µ«´Óʵ¼ÊÇé¿ö³ö·¢£¬¾ø´ó¶àÊýÏÖÓÐϵͳ¶¼»áÊÇÒÔµ¥µã³¢ÊÔ¡¢½¥½øÊ½µÄ·½Ê½À´Â䵨£¬»ò·¢Õ¹¡¢»ò»Ø³·¡£ ÄÇô£¬ÈçÉÏͼËùʾ£º

  1. Èç¹ûÔÚ¼ÈÓÐMVC´úÂë½á¹¹ÖУ¬View -> Model£¬ÔÚÕâÖÖ½¥½øÊ½Ç¨ÒƳ¡¾°Ï£¬¾ÍÐèÒªÐÞ¸ÄViewÀ´ÊÊÅäеÄViewModel¡£
  2. Èç¹û View ²»ÒýÓà Model£¬ÔòÊÇÓÉ ControllerÀ´×ö½ºË®²ãÉèÖøüÐÂÊÓͼ£¨ÃüÁîʽUI£©¡£
  3. ºóÕߵĺô¦ÊÇ£¬±£³ÖViewµÄ¶ÀÁ¢ÐÔ£¬Ö»ÐèÒªÐÞ¸ÄÕâ¸öÒµÎñ³¡¾°¶ÔÓ¦µÄµ¥¸öController¼´¿É¡£ÒòΪView¾ßÓпɸ´ÓÃÐÔ£¬¿ÉÄÜÔÚÁíÍ⻹û׼±¸Ç¨ÒÆ/¸Ä±äµÄÄ£¿éÀïÒ²ÓÐʹÓá£
ËùÒÔ£¬´Ë´¦²»½¨Òé View -> Model¡£ ÄÇô£¬Ë­¶ÔÄØ£¿

4 Ë­¶ÔË­´íµÄÎñÐéÌÖÂÛ

µ±ÓгÌÐòÔ±ÒªÍÆ¼öʹÓÃÆäËü¼Ü¹¹Ä£Ê½µÄʱºò£¬Í¨³£¿ªÍ·µÄÒ»¾ä»°¾ÍÊÇÏÈ˵MVCģʽµÄÎÊÌâ¡£

±ÈÈçReSwiftÔÚд Why ReSwift? ʱ£¬¿ªÍ·µÚÒ»¾ä»°¾ÍÊÇ£ºModel-View-Controller (MVC) is not a holistic application architecture. ÎÒ¸öÈËÈÏΪ

  • ¼Ü¹¹ÊÇÒ»¸öÃû´Ê£¨n.£©+¶¯´Ê£¨v.£©¡£
    • ¼Ü¹¹£¨n. & v.£©ÊÇΪÁ˰ïÖú ¿ª·¢ÕßÔÚ½»Á÷ʱÓÐÒ»ÖµÄÀí½â¡¢ÔÚÒµÎñÐèҪʱÄܹ»±ãÓÚÀ©Õ¹¡¢ÔÚ³öÎÊÌâʱÄܹ»¿ìËÙ¶¨Î»µÈµÈ£¨¶Ô¿¹ìØÔö£©¡£¾ßÌ廹ÊÇ¿´²ÉÓÃÕâ¸ö¼Ü¹¹µÄµÃʧ£¬Òª½â¾öʲôÎÊÌâ»ò´øÀ´Ê²Ã´ºÃ´¦£¬È»ºó´øÀ´Ê²Ã´³É±¾»ò¸¶³öʲô´ú¼Û¡£

    • ¼Ü¹¹£¨v.£©Í¨¹ý·ÖÅäÿ²¿·Ö´úÂëµÄÖ°Ôð²¢ÎªËûÃÇÈ¡Ãû£¨ºÃ±ÈiOS/Android¿ª·¢¹¤³ÌʦÕâÑùµÄ¸ÚλÃû³Æ£¬ÈñðÈËÒ»¿´¾ÍÖªµÀÊÇ×öʲôµÄ£©£¬È»ºó¼¸¸öÃû×Ö¼ÓÔÚÒ»Æð ÐγÉÁ˼ܹ¹Ä£Ê½Õâ¸ö³éÏó¸ÅÄî¡£

    • ´Ó¾ßÌåµ½³éÏó£¬È»ºóÔÙÓÉÕâ¸ö³éÏó¸ÅÄîÈ¥Ö¸µ¼³ÌÐòԱʵ¼ùд´úÂ룬´Ù½øÁ˼ܹ¹µÄ´«²¥£¬±ÈÈçMVC¡¢MVP¡¢MVVM¡¢MVVM-C¡¢MVI¡¢MV-Whatever£¬VIPER£¬Redux and More¡­¡­
  • ÓÐʱºò²¢²»Ò»¶¨ÊǼܹ¹Ä£Ê½µÄ´í£¬»¹ÓпÉÄÜÊÇÆ½Ì¨/¿ò¼ÜÔÚÈüܹ¹Ä£Ê½×Ô´«²¥Ê±²ÉÓõľßÌå·½°¸³öÁ˵ãÎÊÌ⣬ÓÖ»òÕßÊÇ¿ª·¢Õß×Ô¼ºÐ´´úÂëµÄÎÊÌâ¡£
  • ÓÐʱºò¼Ü¹¹Ä£Ê½Ö®¼äÒ²²»ÊÇ»¥³âµÄ£¬Ò²¿ÉÒÔÔÚ²»Í¬³¡¾°Ï»¥²¹¡£±ÈÈçÔÚMVCÀÿ¸öÒµÎñ±íÏÖÄ£¿é²»Ò»¶¨ÒªÓÐÈý¸öÔªËØÆë¾Û£¬ÉõÖÁÒ²¿ÉÒÔ VC-M-VC ¹²ÓÃÒ»¸öM£¨¿É²Î¿¼Ë¹Ì¹¸£iOS¿ª·¢¿Î³ÌÄÚÈÝ£©¡£

ÓÐÒ»¸öʵ¼ÊµÄÒµÎñ³¡¾°ÊÇÕâôʵ¼ùµÄ£º

MVCºÍMVVMÔÚÒ»¸öÒµÎñ³¡¾°ÀïÏà½áºÏ¡£ ÕâÀïÌáµ½ÁËMVVM£¬ Ç°ÃæµÄKotlin¿çƽ̨ͼ£¬³ýÁËÉæ¼°µ½ View -> Model µÄÒýÓùØÏµÊÇ·ñÓ¦¸Ã´æÔÚµÄÌÖÂÛ£¬Ò²Éæ¼°µ½ÁËDeclarative-UIºÍMVVM¼Ü¹¹Ä£Ê½µÈ¸ÅÄ ÔÙ˳±ãÕ¹¿ªÏ¡£

1£©MVVM ºÍ MVW

MVC¡¢MVP ºÍ Declarative-UI ÕâÈý¸öÃû´Ê¸ÅÄî¶¼Óм¸Ê®ÄêÀúÊ·ÁË£¬ÆäÖÐÉùÃ÷ʽUIÔÚ½üÊ®ÄêÓÖ¿ªÊ¼»ðÁËÆðÀ´£» ¶øMVVMÔòÓÐÊ®¼¸ÄêÀúÊ·¡£

¹Ù·½¶ÔMVVMÓÐÕâôһЩÃèÊö£º

  • VºÍVMÊÇÒ»¶Ô¶àµÄ¹ØÏµ£¬¼´View 1:n ViewModel¡£Ïà±ÈÓÚ MVCÀï Controller 1:n View£¬ÏÔÈ»MVCµÄC¸üÈÝÒ×ÅòÕÍ£¬ËùÒÔÉÏÃæÒ²Ìáµ½ÁËʹÓöàController·½°¸¡£
  • VÒýÓÃVM£¬VM²Ù×÷M£¬¶øVM²»ÐèÒªÒýÓÃV£¨ºÍMVP²»Í¬£©¡£VM×÷ΪVµÄÉÏÏÂÎÄ£¬°üº¬VËùÐèÓÃÀ´Õ¹Ê¾µÄÊý¾Ý£¬ÏìÓ¦V±»Óû§´¥·¢µÄʼþ¡£
  • V¶ÔMÎÞ¸ÐÖª£¬·´¹ýÀ´ M ¶Ô VºÍVM Ò²ÎÞ¸ÐÖª¡£ÕûÌåÊÇËÉÉ¢½âñîµÄģʽ¡£
  • µ±VMµÄÊôÐÔÖµ·¢Éú±ä»¯Ê±£¬Í¨¹ýÊý¾Ý°ó¶¨·½Ê½´«´ï¸øV¡£Õâ¾ÍÐèÒªÓлúÖÆÖ§³Å£¬ÓжÔÓ¦µÄ»úÖÆMVCÒ²ÄÜ×öÊý¾Ý°ó¶¨¡£

»ùÓÚÉÏÊöÃèÊöÎÒ»­ÁËÏÂͼ£º

×ÜÌåÀ´Ëµ£¬MVVMÊÇ»ùÓÚʼþÇý¶¯µÄ¡¢ÒÔÊý¾Ý°ó¶¨»úÖÆÎªÖ§³ÅµÄËÉÉ¢½âñî¼Ü¹¹Ä£Ê½¡£

  • ËüµÄǰÌáÊÇÓÐϵͳ/ƽ̨/¿ò¼ÜµÄ»úÖÆÖ§³Å£¬²»È»ÊµÏֳɱ¾ºÍ¸´ÔÓ¶ÈÓеã´ó¡£
  • Ïà±ÈMVC£¬ËüµÄÓÅÊÆÊÇÊÓͼ¿ØÖÆÂß¼­²»Ì«»áÅòÕÍ£¬´úÂëµ¥Ôª¸üÈÝÒ×±»²âÊÔ£¬ÔڿɶÁÐÔ¡¢¿Éά»¤ÐÔÉϸüºÃ¡£
  • Ëü¿ÉÄÜ´øÀ´µÄ³É±¾/ÎÊÌâÊÇÈëÃÅÉÏÊÖ½ÏÄÑ£¬¼òµ¥³¡¾°ÏÂʹÓÃÈÝÒ×¹ý¶ÈÉè¼Æ£¬¸´ÔÓ³¡¾°Ï³öÎÊÌâµ÷ÊԱȽÏÂé·³¡£

¿¼Âǵ½ViewControllerÔڸó¡¾°µÄ±¡½ºË®ÌØÖÊ£¬ÒÔ¼°Ò²²ÎÓëÊÓͼչʾºÍÓû§ÏìÓ¦£¬ËùÒÔÎÒ°ÑËü·ÅÔÚVÀï¡£ ÓÉÓÚÒµ½çÓÐÌ«¶àMV-¿ªÍ·µÄģʽÃû´ÊÁË£¬ËùÒÔAngular¹Ù·½Ö±½ÓÉùÃ÷ÁËÒ»¸öMVW£º

I hereby declare AngularJS to be MVW framework - Model-View-Whatever. Where Whatever stands for "whatever works for you".

ÕâÖÖÉùÃ÷ÓиöºÃ´¦£¬¾ÍÊÇÃâÈ¥ÁËË­¶ÔË­´í/Ë­ºÃË­»µµÄÕùÖ´£¬¶øÖØµã¹Ø×¢ÓÚË­Êʺϡ£

5 Ë­¶ÔË­´íµÄÎñʵ°¸Àý£ºVIPERºÍ·Ö²ãÑݱä

¹ØÓÚË­¶ÔË­´í/Ë­ºÃË­»µ£¬¿ÉÒÔÔÙÀ´¿´Ò»¸ö°¸Àý¡£

VIPER ¼Ü¹¹Ä£Ê½µÄÓ¦ÓÃ

VIPER¸ÅÄîÓÉView¡¢Interactor¡¢Presenter¡¢Entity¡¢Router¼¸¸öÔªËØ×é³É£¬´óÖÂÈçÏ£º

ÎÒ֮ǰд¹ýMVC¡¢MVP¡¢MVVM¡¢VIPERµÈ¼Ü¹¹Ä£Ê½ÏµĴúÂ룬ÍêȫʵÏÖ»ò²»ÍêȫʵÏÖ¡£

ÓÐÒ»´Î£¬ÎÒÔÚij¸öÒµÎñ±íÏÖÄ£¿éÀïÓ¦ÓÃVIPER£¬È»ºó¶¨ÒåÁËÒ»¸öXxxNetworkInteractorÀ࣬ÓÃÀ´¸ºÔð×öÍøÂçÇëÇó¡£

VIPER¼Ü¹¹Ä£Ê½µÄÑݱä

ºóÀ´Ëæ×ÅÒµÎñ³¡¾°µÄ±ä»¯£¬Ò»¸öÒµÎñÄ£¿é¿ÉÄÜÐèÒª¶Ô½Ó¶àÌ×Íø¹Ø·þÎñ£¬ XxxNetworkInteractor¾ÍÒª×ö³éÏó¸ôÀ룬Ïû³ýÒµÎñÂß¼­¶Ô¶àÌ×Íø¹ØÇëÇóµÄ¸ÐÖª£¬²¢ÇÒÓ¦Óõ½ÆäËüÒµÎñÄ£¿é¡£Õâ¾ÍÓеãÏñ VPER - I - VPER ģʽ ¡ª¡ª ¶à¸öÒµÎñÄ£¿é¶Ô Interactor ½øÐÐÁ˸´Óá£

½ø»¯

  • Ëæ×ŶԽÓÍø¹ØÊýµÄÔö¼Ó¡¢Íø¹ØÄÜÁ¦µÄÔöÇ¿£¬XxxNetworkInteractorÒ²ÅäÌ×½¨ÉèÁ˸ü¶àÄÜÁ¦¡£
  • Ëæ×ÅʹÓÃXxxNetworkInteractorµÄÄ£¿éÔ½À´Ô½¶à£¬²»Í¬ÒµÎñµÄһЩͨÓÃËßÇóºÍ´¦ÀíÂß¼­Ò²ËæÖ®Ôö¼Ó¡£
  • Ëæ×ÅXxxNetworkInteractorµÄ¹¦ÄÜÔ½À´Ô½Ç¿´ó£¬´úÂëÔ½À´Ô½¶à£¬Öð½¥ÐèÒª³éÀë³öÒ»¸öµ¥¶ÀÄ£¿é£¬²»¹ÜÊÇ´ÓÌá¸ß±àÒëËÙ¶È£¬»¹ÊÇ´Ó·â×°±©Â¶µÈ½Ç¶È¡£

ÓÚÊÇ£¬XxxNetworkSDK.frameworkµ®ÉúÁË¡£

ÍË»¯

ÔÙºóÀ´£¬Ëæ×ż¼ÊõºÍÒµÎñµÄ±ä»¯£¬µ×²ãÍø¹Ø·þÎñATop³ÉΪÁËÁìÓò·¶Î§ÄÚµÄÊÂʵ±ê×¼£¬Ö®Ç°Óöµ½µÄÎÊÌâÒ²ÏûʧÁË£¬¶øXxxNetworkSDKÓÖ´øÀ´Ò»Ð©³É±¾£¬±ÈÈçÒªÅäÌ×ATopµÄÄÜÁ¦Éý¼¶½øÐеü´úά»¤¡£ ´Ëʱ£¬XxxNetworkSDK¿ÉÒÔÍ˳öÀúÊ·Îę̀ÁË£¬ÈÃÒµÎñ9Ä£¿éÖ±½ÓÃæÏòATop±à³Ì£¬ÕâÑù¼È½µµÍÁËά»¤³É±¾£¬ÓÖ´øÀ´ÁËÒ»¶¨µÄ°ü´óСÊÕÒæ¡£

ÒԺ󣬼ÙÈçÓÐÁíÍâÒ»¸öÁìÓò·¶Î§µÄÒµÎñ³¡¾°£¨²ÉÓÃÁËXTop£©£¬Òª¸´ÓÃ×îÉϲãµÄÒµÎñÄ£¿é£¬ ÓÉÓÚÔÚÁíÍâÒ»¸öÁìÓò·¶Î§£¬ÒµÎñÄ£¿éÒª´Ó µ÷ÓÃATop ¸ÄΪµ÷ÓÃXTop¡£ ÄÇô£¬½ÓÊÖ»ò¸ºÔðÇ¨ÒÆ¸´ÓõĿª·¢Õߣ¬»á²»»áÔÚÏ룺ΪʲôÕâЩҵÎñÄ£¿éÖ±½Óµ÷ÓÃATop£¬¶øÃ»ÓÐʹÓÃÒ»¸öXxxNetworkInteractorÀ´×ö·Ö²ã¸ôÀëÄØ£¿ÈÃÒµÎñ²»Òª¸ÐÖª¾ßÌåµÄÊý¾Ý¿â»òÍøÂç·þÎñʵÏÖ¡£

  • Èç¹ûÓУ¬ËûÖ»Òª×öÒ»¼þÊÂÇ飺ÈÃXxxNetworkInteractor¶Ô½ÓXTop¼´¿É¡£
  • Èç¹ûûÓУ¬ËûÐèÒªÈ¥Ìæ»»ÐÞ¸Äÿ¸öÒµÎñÄ£¿éµÄµ÷ÓôúÂë¡¢·µ»ØÖµ´¦ÀíµÈµÈ¡£

ËÄ Ð´ÔÚ×îºó£¬»Øµ½ÎÊÌâ

²»¹ÜÊÇÎñÐéµÄÌÖÂÛ£¬»¹ÊÇÎñʵµÄ°¸Àý£¬»òÕßÊÇAngularµÄ¡°whatever works for you¡±µÄ¹Ûµã£¬ ½áÂÛÊÇûÓÐË­¶ÔË­´í¡¢Ë­ºÃË­»µ£¬Ö»ÓÐʵ¼Ê³¡¾°ÏÂÒª½â¾öµÄºËÐÄÎÊÌâ¡£ ±øÎÞ³£ÊÆ£¬Ë®ÎÞ³£ÐΡ£ ÄÇô£¬»Øµ½ÏëÒª½â¾öµÄÎÊÌ⣺

ÔÚÓɲ»Í¬¿ª·¢ÈËÔ±³ÖÐøµü´ú¡¢½øÐй¦ÄÜÉý¼¶µÄÈí¼þ¿ª·¢»î¶¯ÖУ¬ÈçºÎ±£ÕϾßÓи´ÔÓÂß¼­µÄÉ̼Ҿ­Óª¹¤¾ßµÄ²úÆ·ÖÊÁ¿¡£

ÎÒµÄÏë·¨ÊÇÒԿɲâÐÔ×÷ΪÊֶΣ¬À´±£ÕϹ¦ÄÜÉý¼¶¸ÄÔì»ò´úÂëÖØ¹¹ºó£¬¿ÉÔÚºÏÀíʱ¼ä·¶Î§Äڵõ½³ä·Ö»Ø¹éÑéÊÕ£¬±£ÕÏÏà¹Ø×é¼þ¡¢Ä£¿é»òÕûÌå²úÆ·µÄÖÊÁ¿¡£

¾ßÌåµÄ·½°¸ÊµÊ©ÉÏ£¬ÒòΪÊÇÒԿɲâÐÔÎªÖØÒª¹Ø×¢µã£¬ÔÙ½áºÏĿǰµÄ¼¼Êõ·½Ïò£¬ÎÒ»áÇãÏòÓÚ²ÉÓÃMVVM¡£

  • MVVMµÄ¼Ü¹¹Ä£Ê½ÔÚÀí½âºÍÈÏÖªÉϱȽϳÉÊ죨Ӧ¸ÃÊÇÒÆ¶¯¶Ë¿ª·¢ÁìÓòTOP2Á÷Ðеģ©£¬±ãÓÚʵʩºÍ´«²¥£¬²¢Í¨¹ýģʽµÄÃû³ÆÀ´ÌåÏÖҪǿµ÷µÄ¹Ø×¢µã£º¿É²âÐÔ¡£
  • MVVM¿ÉÒÔ¸üºÃµØ½áºÏSwiftUI+Combine¡¢Kotlin¿çƽ̨µÈ¼¼Êõ·½Ïò¡£
  • MVVMÍêÈ«°æµÄÉÏÊÖÃż÷ºÍ¼òµ¥³¡¾°µÄ¹ý¶ÈÉè¼ÆÎÊÌ⣬¿ÉÒÔͨ¹ý²ÉÓò»ÍêÈ«°æMVVMÀ´½â¾ö¡£
    • ²»ÍêÈ«°æµÄMVVM¿ÉÒÔcoverÊÊÓÃÓÚ¼òµ¥³¡¾°µÄMVC£¬½üËÆÓÚ ³¬¼¯-×Ó¼¯ ¹ØÏµ¡£

    • ËäȻҲ¿ÉÒÔͨ¹ý¶àControllerµÄ·½Ê½À´½â¾öMVCÅòÕÍÎÊÌ⣬µ«MVCµÄÃüÃûÔÚʵ¼ùÖоÍÈÝÒ×ÈóÌÐòÔ±Èõ»¯µô¿É²âÐÔÕâ¸ö¹Ø×¢µã£¨Ò²¿ÉÄÜÊÇÎÒ¸öÈËÀí½âºÍʵ¼ù²»¹»ÕýÈ·£©¡£
  • ¸´ÔÓ³¡¾°µÄµ÷ÊÔÎÊÌâ¡¢¸ü¶à¿É²âÐÔµÄʵ¼ù£¬ÐèÒªÔÙÃþË÷Ï£¬Ò²Ï£ÍûµÃµ½Ïà¹Ø·ÖÏíºÍÖ¸µã¡£

 

   
1329 ´Îä¯ÀÀ       30
Ïà¹ØÎÄÕÂ

ÆóÒµ¼Ü¹¹¡¢TOGAFÓëArchiMate¸ÅÀÀ
¼Ü¹¹Ê¦Ö®Â·-ÈçºÎ×öºÃÒµÎñ½¨Ä££¿
´óÐÍÍøÕ¾µçÉÌÍøÕ¾¼Ü¹¹°¸ÀýºÍ¼¼Êõ¼Ü¹¹µÄʾÀý
ÍêÕûµÄArchimateÊÓµãÖ¸ÄÏ£¨°üÀ¨Ê¾Àý£©
Ïà¹ØÎĵµ

Êý¾ÝÖÐ̨¼¼Êõ¼Ü¹¹·½·¨ÂÛÓëʵ¼ù
ÊÊÓÃArchiMate¡¢EA ºÍ iSpace½øÐÐÆóÒµ¼Ü¹¹½¨Ä£
ZachmanÆóÒµ¼Ü¹¹¿ò¼Ü¼ò½é
ÆóÒµ¼Ü¹¹ÈÃSOAÂ䵨
Ïà¹Ø¿Î³Ì

ÔÆÆ½Ì¨Óë΢·þÎñ¼Ü¹¹Éè¼Æ
ÖÐ̨սÂÔ¡¢ÖÐ̨½¨ÉèÓëÊý×ÖÉÌÒµ
ÒÚ¼¶Óû§¸ß²¢·¢¡¢¸ß¿ÉÓÃϵͳ¼Ü¹¹
¸ß¿ÉÓ÷ֲ¼Ê½¼Ü¹¹Éè¼ÆÓëʵ¼ù
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]
 
×îÐÂÎÄÕÂ
¼Ü¹¹Éè¼Æ-̸̸¼Ü¹¹
ʵÏÖSaaS£¨Èí¼þ¼°·þÎñ£©¼Ü¹¹Èý´ó¼¼ÊõÌôÕ½
µ½µ×ʲôÊÇÊý¾ÝÖÐ̨£¿
ÏìӦʽ¼Ü¹¹¼ò½é
ÒµÎñ¼Ü¹¹¡¢Ó¦Óüܹ¹ÓëÔÆ»ù´¡¼Ü¹¹
×îпγÌ
Èí¼þ¼Ü¹¹Éè¼Æ·½·¨¡¢°¸ÀýÓëʵ¼ù
´Ó´óÐ͵çÉ̼ܹ¹Ñݽø¿´»¥ÁªÍø¸ß¿ÉÓüܹ¹Éè¼Æ
´óÐÍ»¥ÁªÍø¸ß¿ÉÓüܹ¹Éè¼ÆÊµ¼ù
ÆóÒµ¼Ü¹¹Ê¦ (TOGAF¹Ù·½ÈÏÖ¤)
ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ¡ª¸ß¼¶Êµ¼ù
³É¹¦°¸Àý
ijÐÂÄÜÔ´µçÁ¦ÆóÒµ Èí¼þ¼Ü¹¹Éè¼Æ·½·¨¡¢°¸ÀýÓëʵ¼ù
Öк½¹¤ÒµÄ³Ñо¿Ëù ǶÈëʽÈí¼þ¿ª·¢Ö¸ÄÏ
ij¹ìµÀ½»Í¨ÐÐÒµ ǶÈëʽÈí¼þ¸ß¼¶Éè¼ÆÊµ¼ù
±±¾© º½Ìì¿Æ¹¤Ä³×Ó¹«Ë¾ Èí¼þ²âÊԼܹ¹Ê¦
±±¾©Ä³ÁìÏÈÊý×ÖµØÍ¼ ¼Ü¹¹Ê¦£¨Éè¼Æ°¸Àý£©