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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
±»Îó½âµÄMVCºÍ±»Éñ»¯µÄMVVM
 
×÷Õߣº ÌÆÇÉ À´Ô´£ºInfoQ ·¢²¼ÓÚ 2015-12-22
  3703  次浏览      29
 

±»Îó½âµÄ MVC

MVC µÄÀúÊ·

MVC£¬È«³ÆÊÇ Model View Controller£¬ÊÇÄ£ÐÍ (model)£­ÊÓͼ (view)£­¿ØÖÆÆ÷ (controller) µÄËõд¡£Ëü±íʾµÄÊÇÒ»ÖÖ³£¼ûµÄ¿Í»§¶ËÈí¼þ¿ª·¢¿ò¼Ü¡£

MVC µÄ¸ÅÄî×îÔç³öÏÖÔÚ¶þÊ®ÊÀ¼Í°ËÊ®Äê´úµÄ Ê©ÀÖÅÁ¿Ë ʵÑéÊÒÖУ¨¶Ô£¬¾ÍÊÇÄǸö·¢Ã÷ͼÐÎÓû§½çÃæºÍÊó±êµÄʵÑéÊÒ£©£¬µ±Ê±Ê©ÀÖÅÁ¿ËΪ Smalltalk ·¢Ã÷ÁËÕâÖÖÈí¼þÉè¼ÆÄ£Ê½¡£

ÏÖÔÚ£¬MVC ÒѾ­³ÉΪÖ÷Á÷µÄ¿Í»§¶Ë±à³Ì¿ò¼Ü£¬ÔÚ iOS ¿ª·¢ÖУ¬ÏµÍ³ÎªÎÒÃÇʵÏÖºÃÁ˹«¹²µÄÊÓͼÀࣺUIView£¬ºÍ¿ØÖÆÆ÷ÀࣺUIViewController¡£´ó¶àÊýʱºò£¬ÎÒÃǶ¼ÐèÒª¼Ì³ÐÕâЩÀàÀ´ÊµÏÖÎÒÃǵijÌÐòÂß¼­£¬Òò´Ë£¬ÎÒÃǼ¸ºõÌӱܲ»¿ª MVC ÕâÖÖÉè¼ÆÄ£Ê½¡£

µ«ÊÇ£¬¼¸Ê®Äê¹ýÈ¥ÁË£¬ÎÒÃǶÔÓÚ MVC ÕâÖÖÉè¼ÆÄ£Ê½ÕæµÄÓõúÃÂð£¿Æäʵ²»Êǵģ¬MVC ÕâÖֲַ㷽ʽËäÈ»Çå³þ£¬µ«ÊÇÈç¹ûʹÓò»µ±£¬ºÜ¿ÉÄÜÈôóÁ¿´úÂë¶¼¼¯ÖÐÔÚ Controller Ö®ÖУ¬Èà MVC ģʽ±ä³ÉÁË Massive View Controller ģʽ¡£

Controller µÄÓ·Ö×ÎÊÌâºÎ½â£¿

ºÜ¶àÈËÊÔͼ½â¾ö MVC ÕâÖּܹ¹Ï Controller ±È½ÏÓ·Ö×µÄÎÊÌâ¡£ÎÒ»¹¼ÇµÃ°ëÄêǰ InfoQ ¸ãÁËÒ»´ÎÒÆ¶¯×ù̸»á£¬µ±Ê± BeeFramework ºÍ Samurai-Native µÄ×÷Õß ÀϹù ÎÊÁËÎÒÒ»¾ä»°£º¡¸Ê²Ã´ÑùµÄÄÚÈݲÅÓ¦¸Ã·Åµ½ Controller ÖУ¿¡¹¡£µ«Êǵ±Ê±ÒòΪʱ¼ä²»¹»£¬ÎÒûÄÜÕ¹¿ªÎҵĹ۵㣬Õâ´ÎÕýºÃÔÚÕâÀïºÃºÃ̸̸ÎÒ¶ÔÓÚÕâ¸öÎÊÌâµÄÏë·¨¡£

ÎÒÃÇÀ´¿´¿´ MVC ÕâÖּܹ¹µÄÌØµã¡£ÆäʵÉè¼ÆÄ£Ê½ºÜ¶àʱºòÊÇΪÁË Don't repeat yourself Ô­ÔòÀ´×öµÄ£¬¸ÃÔ­ÔòÒªÇóÄܹ»¸´ÓõĴúÂëÒª¾¡Á¿¸´Óã¬À´±£Ö¤ÖØÓá£ÔÚ MVC ÕâÖÖÉè¼ÆÄ£Ê½ÖУ¬ÎÒÃÇ·¢ÏÖ View ºÍ Model ¶¼ÊÇ·ûºÏÕâÖÖÔ­ÔòµÄ¡£

¶ÔÓÚ View À´Ëµ£¬ÄãÈç¹û³éÏóµÃºÃ£¬ÄÇôһ¸ö App µÄ¶¯»­Ð§¹û¿ÉÒԺܷ½±ãµØÒÆÖ²µ½±ðµÄ App ÉÏ£¬¶ø Github ÉÏÒ²Óкܶà UI ¿Ø¼þ£¬ÕâЩ¿Ø¼þ¶¼ÊÇÔÚ View ²ã×öÁ˺ܺõķâ×°Éè¼Æ£¬Ê¹µÃËüÄܹ»·½±ãµØ¿ªÔ´¸ø´ó¼Ò¸´Óá£

¶ÔÓÚ Model À´Ëµ£¬ËüÆäʵÊÇÓÃÀ´´æ´¢ÒµÎñµÄÊý¾ÝµÄ£¬Èç¹û×öµÃºÃ£¬ËüÒ²¿ÉÒÔ·½±ãµØ¸´ÓᣱÈÈçÎÒµ±Ê±ÔÚ×öÓеÀÔÆ±Ê¼Ç iPad °æµÄʱºò£¬ÎÒÃǾÍÖ±½ÓºÍ iOS °æ¸´ÓÃÁËËùÓÐµÄ Model ²ãµÄ´úÂë¡£ÔÚ´´Òµ×öÔ³Ìâ¿â¿Í»§¶Ëʱ£¬iOS ºÍ iPad °æµÄ Model ²ã´úÂëÔٴα»¸´ÓÃÉÏÁË¡£µ±È»£¬ÒòΪºÍÒµÎñ±¾ÉíµÄÊý¾ÝÒâÒåÏà¹Ø£¬Model ²ãµÄ¸´Óôó¶àÊýÊÇÔÚÒ»¸ö²úÆ·ÄÚ²¿£¬²»Ì«¿ÉÄÜÏñ View ²ãÄÇÑù¿ªÔ´¸øÉçÇø¡£

˵Íê View ºÍ Model ÁË£¬ÄÇÎÒÃÇÏëÏë Controller£¬Controller ÓжàÉÙ¿ÉÒÔ¸´Óõģ¿ÎÒÃÇдÍêÁËÒ»¸ö Controller Ö®ºó£¬¿ÉÒԺܷ½±ãµØ¸´ÓÃËüÂ𣿽áÂÛÊÇ£º·Ç³£ÄѸ´Óá£ÔÚijЩ³¡¾°Ï£¬ÎÒÃÇ¿ÉÄÜ¿ÉÒÔÓÃaddSubViewController Ö®ÀàµÄ·½Ê½¸´Óà Controller£¬µ«ËüµÄ¸´Óó¡¾°»¹ÊǷdz£·Ç³£Éٵġ£

Èç¹ûÎÒÃÇÄܹ»Òâʶµ½ Controller ÀïÃæµÄ´úÂë²»±ãÓÚ¸´Óã¬ÎÒÃǾÍÄÜÖªµÀʲô´úÂëÓ¦¸ÃдÔÚ Controller ÀïÃæÁË£¬ÄǾÍÊÇÄÇЩ²»Äܸ´ÓõĴúÂë¡£ÔÚÎÒ¿´À´£¬Controller ÀïÃæ¾ÍÖ»Ó¦¸Ã´æ·ÅÕâЩ²»Äܸ´ÓõĴúÂ룬ÕâЩ´úÂë°üÀ¨£º

ÔÚ³õʼ»¯Ê±£¬¹¹ÔìÏàÓ¦µÄ View ºÍ Model¡£

¼àÌý Model ²ãµÄʼþ£¬½« Model ²ãµÄÊý¾Ý´«µÝµ½ View ²ã¡£

¼àÌý View ²ãµÄʼþ£¬²¢ÇÒ½« View ²ãµÄʼþת·¢µ½ Model ²ã¡£

Èç¹û Controller Ö»ÓÐÒÔÉϵÄÕâЩ´úÂ룬ÄÇôËüµÄÂß¼­½«·Ç³£¼òµ¥£¬¶øÇÒÒ²»á·Ç³£¶Ì¡£

µ«ÊÇ£¬ÎÒÃÇÈ´ºÜÄÑ×öµ½ÕâÒ»µã£¬ÒòΪ»¹ÊÇÓкܶàÂß¼­ÎÒÃDz»ÖªµÀдÔÚÄÄÀÓÚÊǾͶ¼Ð´µ½ÁË Controller ÖÐÁË£¬ÄÇÎÒÃǽÓÏÂÀ´¾Í¿´¿´ÆäËüÂß¼­Ó¦¸ÃдÔÚÄÄÀï¡£

ÈçºÎ¶Ô ViewController ÊÝÉí£¿

objc.io ÊÇÒ»¸ö·Ç³£ÓÐÃûµÄ iOS ¿ª·¢²©¿Í£¬ËüÉÏÃæµÄµÚÒ»¿Î ¡¶Lighter View Controllers¡· ÉϾͽ²Á˺ܶàÕâÑùµÄ¼¼ÇÉ£¬ÎÒÃÇÏÈ×ܽáÒ»ÏÂËüÀïÃæµÄ¹Ûµã£º

½« UITableView µÄ Data Source ·ÖÀëµ½ÁíÍâÒ»¸öÀàÖС£

½«Êý¾Ý»ñÈ¡ºÍת»»µÄÂß¼­·Ö±ðµ½ÁíÍâÒ»¸öÀàÖС£

½«Æ´×°¿Ø¼þµÄÂß¼­£¬·ÖÀëµ½ÁíÍâÒ»¸öÀàÖС£

ÄãÏëÃ÷°×ÁËÂð£¿Æäʵ MVC ËäȻֻÓÐÈý²ã£¬µ«ÊÇËü²¢Ã»ÓÐÏÞÖÆÄãÖ»ÄÜÓÐÈý²ã¡£ËùÒÔ£¬ÎÒÃÇ¿ÉÒÔ½« Controller ÀïÃæ¹ýÓÚÓ·Ö×µÄÂß¼­³éÈ¡³öÀ´£¬ÐγÉеĿɸ´ÓÃÄ£¿é»ò¼Ü¹¹²ã´Î¡£

ÎÒ¸öÈ˶ÔÓÚÂß¼­µÄ³éÈ¡£¬ÓÐÒÔÏÂ×ܽᡣ

½«ÍøÂçÇëÇó³éÏóµ½µ¥¶ÀµÄÀàÖÐ

ÐÂÊÖд´úÂ룬ֱ½Ó¾ÍÔÚ Controller ÀïÃæÓà AFNetworking ·¢Ò»¸öÇëÇó£¬ÇëÇóµÄÍêÊý¾ÝÖ±½Ó¾Í´«µÝ¸ø View¡£ÈëÃÅһЩµÄͬѧ£¬ÖªµÀ°ÑÕâЩÇëÇó´úÂëÒÆµ½ÁíÍâÒ»¸ö¾²Ì¬ÀàÀïÃæ¡£µ«ÊÇÎÒ¾õµÃ»¹²»¹»£¬ËùÒÔÎÒ½¨Ò齫ÿһ¸öÍøÂçÇëÇóÖ±½Ó·â×°³ÉÀà¡£

°Ñÿһ¸öÍøÂçÇëÇó·â×°³É¶ÔÏóÆäʵÊÇʹÓÃÁËÉè¼ÆÄ£Ê½ÖÐµÄ Command ģʽ£¬ËüÓÐÒÔϺô¦£º

½«ÍøÂçÇëÇóÓë¾ßÌåµÄµÚÈý·½¿âÒÀÀµ¸ôÀ룬·½±ãÒÔºó¸ü»»µ×²ãµÄÍøÂç¿â¡£Êµ¼ÊÉÏÎÒÃǹ«Ë¾µÄ iOS ¿Í»§¶Ë×î³õÊÇ»ùÓÚ ASIHttpRequest µÄ£¬ÎÒÃÇÖ»»¨ÁËÁ½Ì죬¾ÍºÜÇáËɵØÇл»µ½ÁË AFNetworking¡£

·½±ãÔÚ»ùÀàÖд¦Àí¹«¹²Âß¼­£¬ÀýÈçÔ³Ìâ¿âµÄÊý¾Ý°æ±¾ºÅÐÅÏ¢¾ÍͳһÔÚ»ùÀàÖд¦Àí¡£

·½±ãÔÚ»ùÀàÖд¦Àí»º´æÂß¼­£¬ÒÔ¼°ÆäËüһЩ¹«¹²Âß¼­¡£

·½±ã×ö¶ÔÏóµÄ³Ö¾Ã»¯¡£

´ó¼ÒÈç¹û¸ÐÐËȤ£¬¿ÉÒÔ¿´ÎÒÃǹ«Ë¾¿ªÔ´µÄ iOS ÍøÂç¿â£ºYTKNetwork¡£ËüÔÚÕâÖÖ˼¿¼µÄÖ¸µ¼Ï£¬²»µ«½« Controller ÖеĴúÂëÊÝÉí£¬¶øÇÒ½øÒ»²½ÑÝ»¯ºÍ¼ÓÇ¿£¬ÏÖÔÚËü»¹Ö§³ÖÖîÈ縴ÔÓÍøÂçÇëÇó¹ÜÀí£¬¶ÏµãÐø´«£¬²å¼þ»úÖÆ£¬JSON ºÏ·¨ÐÔ¼ì²éµÈ¹¦ÄÜ¡£

Õⲿ·Ö´úÂë´Ó Controller ÖаþÀë³öÀ´ºó£¬²»µ«¼ò»¯ÁË Controller ÖеÄÂß¼­£¬Ò²´ïµ½ÁËÍøÂç²ãµÄ´úÂ븴ÓõÄЧ¹û¡£

½«½çÃæµÄÆ´×°³éÏóµ½×¨ÃŵÄÀàÖÐ

ÐÂÊÖд´úÂ룬ϲ»¶ÔÚ Controller ÖаÑÒ»¸ö¸ö UILabel £¬UIButton£¬UITextField Íù self.view ÉÏÓà addSubView ·½·¨·Å¡£ÎÒ½¨Òé´ó¼Ò¿ÉÒÔÓÃÁ½ÖÖ°ì·¨°ÑÕâЩ´úÂë´Ó Controller ÖаþÀë¡£

·½·¨Ò»£º¹¹ÔìרÃÅµÄ UIView µÄ×ÓÀ࣬À´¸ºÔðÕâЩ¿Ø¼þµÄÆ´×°¡£ÕâÊÇ×î³¹µ×ºÍÓÅÑŵķ½Ê½£¬²»¹ýÉÔ΢Â鷳һЩµÄÊÇ£¬ÄãÐèÒª°ÑÕâЩ¿Ø¼þµÄʼþ»Øµ÷ÏȽӹܣ¬ÔÙ¶¼Ò»Ò»±©Â¶»Ø Controller¡£

·½·¨¶þ£ºÓÃÒ»¸ö¾²Ì¬µÄ Util À࣬°ïÖúÄã×ö UIView µÄÆ´×°¹¤×÷¡£ÕâÖÖ·½Ê½ÉÔ΢×öµÃ²»Ì«³¹µ×£¬µ«ÊDZȽϼòµ¥¡£

¶ÔÓÚһЩÄܸ´ÓÃµÄ UI ¿Ø¼þ£¬ÎÒ½¨ÒéÓ÷½·¨Ò»¡£Èç¹ûÏîÄ¿¹¤³Ì±È½Ï¸´ÔÓ£¬ÎÒÒ²½¨ÒéÓ÷½·¨Ò»¡£Èç¹ûÏîĿ̫½ô£¬ÁíÍâÏà¹ØÏîÄ¿µÄ´úÂëÁ¿Ò²²»¶à£¬¿ÉÒÔ³¢ÊÔ·½·¨¶þ¡£

¹¹Ôì ViewModel

˭˵ MVC ¾Í²»ÄÜÓà ViewModel µÄ£¿MVVM µÄÓŵãÎÒÃÇÒ»Ñù¿ÉÒÔ½è¼ø¡£¾ßÌå×ö·¨¾ÍÊǽ« ViewController ¸ø View ´«µÝÊý¾ÝÕâ¸ö¹ý³Ì£¬³éÏó³É¹¹Ôì ViewModel µÄ¹ý³Ì¡£

ÕâÑù³éÏóÖ®ºó£¬View Ö»½ÓÊÜ ViewModel£¬¶ø Controller Ö»ÐèÒª´«µÝ ViewModel ÕâôһÐдúÂë¡£¶øÁíÍâ¹¹Ôì ViewModel µÄ¹ý³Ì£¬ÎÒÃǾͿÉÒÔÒÆ¶¯µ½ÁíÍâµÄÀàÖÐÁË¡£

ÔÚ¾ßÌåʵ¼ùÖУ¬ÎÒ½¨Òé´ó¼ÒרÃÅ´´½¨¹¹Ôì ViewModel ¹¤³§À࣬²Î¼û ¹¤³§Ä£Ê½¡£ÁíÍ⣬Ҳ¿ÉÒÔרÃŽ«Êý¾Ý´æÈ¡¶¼³é½«µ½Ò»¸ö Service ²ã£¬ÓÉÕâ²ãÀ´Ìṩ ViewModel µÄ»ñÈ¡¡£

רÃŹ¹Ôì´æ´¢Àà

¸Õ¸Õ˵µ½ ViewModel µÄ¹¹Ôì¿ÉÒԳ齱µ½Ò»¸ö Service ²ã¡£Óë´ËÏàÓ¦µÄ£¬Êý¾ÝµÄ´æ´¢Ò²Ó¦¸ÃÓÉרÃŵĶÔÏóÀ´×ö¡£ÔÚСԳËÑÌâÏîÄ¿ÖУ¬ÎÒÃÇÓÉÒ»¸ö½Ð UserAgent µÄÀ࣬רÃÅÀ´´¦Àí±¾µØÊý¾ÝµÄ´æÈ¡¡£

Êý¾Ý´æÈ¡·ÅÔÚרÃŵÄÀàÖУ¬¾Í¿ÉÒÔÕë¶Ô´æÈ¡×ö¶îÍâµÄÊÂÇéÁË¡£±ÈÈ磺

¶ÔһЩÈȵãÊý¾ÝÔö¼Ó»º´æ

´¦ÀíÊý¾ÝÇ¨ÒÆÏà¹ØµÄÂß¼­

Èç¹ûÒª×öµÃ¸üϸ£¬¿ÉÒÔ°Ñ´æ´¢ÒýÇæÔÙ³éÏó³öÒ»²ã¡£ÕâÑùÄã¾Í¿ÉÒÔ·½±ãµØÇл»´æ´¢µÄµ×²ã£¬ÀýÈç´Ó sqlite Çл»µ½ key-value µÄ´æ´¢ÒýÇæµÈ¡£

С½á

ͨ¹ý´úÂëµÄ³éÈ¡£¬ÎÒÃÇ¿ÉÒÔ½«Ô­±¾µÄ MVC Éè¼ÆÄ£Ê½ÖÐµÄ ViewController ½øÒ»²½²ð·Ö£¬¹¹Ôì³ö ÍøÂçÇëÇó²ã¡¢ViewModel ²ã¡¢Service ²ã¡¢Storage ²ãµÈÆäËüÀ࣬À´ÅäºÏ Controller ¹¤×÷£¬´Ó¶øÊ¹ Controller ¸ü¼Ó¼òµ¥£¬ÎÒÃÇµÄ App ¸üÈÝÒ×ά»¤¡£

ÁíÍ⣬²»ÖªµÀ´ó¼Ò×¢Ò⵽û£¬Æäʵ Controller ²ãÊǷdz£ÄÑÓÚ²âÊԵģ¬Èç¹ûÎÒÃÇÄܹ»½« Controller ÊÝÉí£¬¾Í¿ÉÒÔ¸ü·½±ãµØÐ´ Unit Test À´²âÊÔ¸÷ÖÖÓë½çÃæµÄÎ޹صÄÂß¼­¡£Òƶ¯¶Ë×Ô¶¯»¯²âÊÔ¿ò¼Ü¶¼²»Ì«³ÉÊ죬µ«Êǽ« Controller µÄ´úÂë³éÈ¡³öÀ´£¬ÊÇÓÐÖúÓÚÎÒÃÇ×ö²âÊÔ¹¤×÷µÄ¡£

Ï£Íû±¾ÎÄÄܰïÖú´ó¼ÒÕÆÎÕÕýȷʹÓà MVC µÄ×ËÊÆ£¬ÔÚÏÂÒ»½ÚÀÎÒ½«·ÖÏíÒ»ÏÂÎÒ¶Ô MVVM µÄ¿´·¨¡£

±»Éñ»¯µÄ MVVM

MVVM µÄÀúÊ·

MVVM ÊÇ Model-View-ViewModel µÄ¼òд¡£

Ïà¶ÔÓÚ MVC µÄÀúÊ·À´Ëµ£¬MVVM ÊÇÒ»¸öÏ൱еļܹ¹£¬MVVM ×îÔçÓÚ 2005 Ä걻΢ÈíµÄ WPF ºÍ Silverlight µÄ¼Ü¹¹Ê¦ John Gossman Ìá³ö£¬²¢ÇÒÓ¦ÓÃÔÚ΢ÈíµÄÈí¼þ¿ª·¢ÖС£µ±Ê± MVC ÒѾ­±»Ìá³öÁË 20 ¶àÄêÁË£¬¿É¼ûÁ½Õß³öÏÖµÄÄê´ú²î±ðÓжà´ó¡£

MVVM ÔÚʹÓõ±ÖУ¬Í¨³£»¹»áÀûÓÃË«Ïò°ó¶¨¼¼Êõ£¬Ê¹µÃ Model ±ä»¯Ê±£¬ViewModel »á×Ô¶¯¸üУ¬¶ø ViewModel ±ä»¯Ê±£¬View Ò²»á×Ô¶¯±ä»¯¡£ËùÒÔ£¬MVVM ģʽÓÐЩʱºòÓÖ±»³Æ×÷£ºmodel-view-binder ģʽ¡£

¾ßÌåÔÚ iOS ÖУ¬¿ÉÒÔʹÓà KVO »ò Notification ¼¼Êõ´ïµ½ÕâÖÖЧ¹û¡£

MVVM µÄÉñ»¯

ÔÚʹÓÃÖУ¬ÎÒ·¢ÏÖ´ó¼Ò¶ÔÓÚ MVVM ÒÔ¼° MVVM ÑÜÉú³öÀ´µÄ¿ò¼Ü£¨±ÈÈç ReactiveCocoa£©ÓÐÒ»ÖÖ¡¸¾´Î·¡¹¸Ð¡£ÕâÖÖ¡¸¾´Î·¡¹¸ÐijÖ̶ֳÈÉϾÍÏñ¶ÔÉñÒ»Ñù£¬ÕâÖ÷Òª±íÏÖÔÚÎÒûÓÐÌýµ½´ó¼Ò¶ÔÓÚ MVVM µÄÈκÎÅúÆÀ¡£

ÎҸоõÔ­ÒòÊ×ÏÈÊÇ MVVM ²¢Ã»Óкܴó³Ì¶ÈÉÏÆÕ¼°£¬´ó¼Ò¶ÔÓÚм¼ÊõÒ»°ã¶¼²»Ê죬½ø¶ø²»¸ÒÍý¼ÓÆÀÂÛ¡£ÁíÍ⣬ReactiveCocoa ±¾ÉíÉÏÊֵĸ´ÔÓÐÔ£¬Ò²ÈúܶàÈ˸оõµ½ÕâÖÖ¼¼ÊõºÜ¸ßÉîÄѶ®£¬½ø¶ø¼ÓÖØÁË´ó¼Ò¶ÔËüµÄ¡¸¾´Î·¡¹¡£

MVVM µÄ×÷ÓúÍÎÊÌâ

MVVM ÔÚʵ¼ÊʹÓÃÖУ¬È·ÊµÄܹ»Ê¹µÃ Model ²ãºÍ View ²ã½âñµ«ÊÇÈç¹ûÄãÐèҪʵÏÖ MVVM ÖеÄË«Ïò°ó¶¨µÄ»°£¬ÄÇôͨ³£¾ÍÐèÒªÒýÈë¸ü¶à¸´ÔӵĿò¼ÜÀ´ÊµÏÖÁË¡£

¶Ô´Ë£¬MVVM µÄ×÷Õß John Gossman µÄ ÅúÆÀ Ó¦¸ÃÊÇ×îΪÖпϵġ£John Gossman ¶Ô MVVM µÄÅúÆÀÖ÷ÒªÓÐÁ½µã£º

µÚÒ»µã£ºÊý¾Ý°ó¶¨Ê¹µÃ Bug ºÜÄѱ»µ÷ÊÔ¡£Äã¿´µ½½çÃæÒì³£ÁË£¬ÓпÉÄÜÊÇÄã View µÄ´úÂëÓÐ Bug£¬Ò²¿ÉÄÜÊÇ Model µÄ´úÂëÓÐÎÊÌâ¡£Êý¾Ý°ó¶¨Ê¹µÃÒ»¸öλÖÃµÄ Bug ±»¿ìËÙ´«µÝµ½±ðµÄλÖã¬Òª¶¨Î»Ô­Ê¼³öÎÊÌâµÄµØ·½¾Í±äµÃ²»ÄÇôÈÝÒ×ÁË¡£

µÚ¶þµã£º¶ÔÓÚ¹ý´óµÄÏîÄ¿£¬Êý¾Ý°ó¶¨ÐèÒª»¨·Ñ¸ü¶àµÄÄÚ´æ¡£

ijÖÖÒâÒåÉÏÀ´Ëµ£¬ÎÒÈÏΪ¾ÍÊÇÊý¾Ý°ó¶¨Ê¹µÃ MVVM ±äµÃ¸´ÔÓºÍÄÑÓÃÁË¡£µ«ÊÇ£¬Õâ¸öȱµãͬʱҲ±»ºÜ¶àÈËÈÏΪÊÇÓŵ㡣

ReactiveCocoa

º¯Êýʽ±à³Ì£¨Functional Programming£©ºÍÏìӦʽ±à³Ì£¨React Programming£©Ò²Êǵ±Ç°ºÜ»ðµÄÁ½¸ö¸ÅÄËüÃǵĽáºÏ¿ÉÒԺܷ½±ãµØÊµÏÖÊý¾ÝµÄ°ó¶¨¡£ÓÚÊÇ£¬ÔÚ iOS ±à³ÌÖУ¬ReactiveCocoa ºá¿Õ³öÊÀÁË£¬ËüµÄ¸ÅÄî¶¼·Ç³£ У¬°üÀ¨£º

º¯Êýʽ±à³Ì£¨Functional Programming£©£¬º¯ÊýÒ²±ä³ÉÒ»µÈ¹«ÃñÁË£¬¿ÉÒÔÓµÓкͶÔÏóͬÑùµÄ¹¦ÄÜ£¬ÀýÈçµ±³É²ÎÊý´«µÝ£¬µ±×÷·µ»ØÖµµÈ¡£¿´¿´ Swift ÓïÑÔ´øÀ´µÄÖڶຯÊýʽ±à³ÌµÄÌØÐÔ£¬¾ÍÄãÖªµÀÕâ¶à Cool ÁË¡£

ÏìӦʽ±à³Ì£¨React Programming£©£¬Ô­À´ÎÒÃÇ»ùÓÚʼþ£¨Event£©µÄ´¦Àí·½Ê½¶¼ÈõÁË£¬ÏÖÔÚÊÇ»ùÓÚÊäÈ루ÔÚ ReactiveCocoa Àï½Ð Signal£©µÄ´¦Àí·½Ê½¡£ÊäÈ뻹¿ÉÒÔͨ¹ýº¯Êýʽ±à³Ì½øÐи÷ÖÖ Combine »ò Filter£¬¾¡ÏÔ¸÷ÖÖÁé»îµÄ´¦Àí¡£

ÎÞ״̬£¨Stateless£©£¬×´Ì¬ÊǺ¯ÊýµÄħ¹í£¬ÎÞ״̬ʹµÃº¯ÊýÄܸüºÃµØ²âÊÔ¡£

²»¿ÉÐ޸ģ¨Immutable£©£¬Êý¾Ý¶¼ÊDz»¿ÉÐ޸ĵģ¬Ê¹µÃÈí¼þÂß¼­¼òµ¥£¬Ò²¿ÉÒÔ¸üºÃµØ²âÊÔ¡£

ÍÛ£¬ËùÓÐÕâЩ¶¼Ì« Cool ÁË¡£µ±ÎÒ¿´µ½µÄʱºò£¬ÎÒ¶¼¼¦¶³ÁË£¡

ÎÒÃÇÓ¦¸Ã¿Í¹ÛÆÀ¼Û MVVM ºÍ ReactiveCocoa

µ«Êǵ«ÊÇ£¬ÎÒͻȻÏëµ½£¬ÎÒºÃÏóÖ»ÐèÒªÒ»¸ö ViewModel ¶øÒÑ£¬ÎÒÍêÈ«¿ÉÒÔ¼òµ¥µØ×öÒ»¸ö ViewModel µÄ¹¤³§Àà»ò Service Àà¾Í¿ÉÒÔÁË£¬ÎªÊ²Ã´ÒªÒýÈëÕâô¶à¿ò¼Ü£¿ÏÖÓÐµÄ MVC ÕæµÄÓÐÄÇô´óµÄÎÊÌâÂð£¿

Ö±µ½ÏÖÔÚ£¬ReactiveCocoa ÔÚ¹úÄÚÍ⻹¶¼ÊÇÔÚСÖÚÁìÓò£¬Ã»Óб»´óÁ¿½ÓÊܳÉΪÖ÷Á÷µÄ±à³Ì¿ò¼Ü¡£²»Ö»ÊÇÔÚ iOS ÓïÑÔ£¬ÔÚ±ðµÄÓïÑÔÖУ¬ÀýÈç Java ÖÐµÄ RxJava ҲͬÑùûÓгÉΪÖ÷Á÷¡£

ÎÒÔÚÕâÀ²»ÊÇÏë˵ ReactiveCocoa ²»ºÃ£¬Ò²²»ÊÇÏë˵ MVVM ²»ºÃ£¬¶øÊÇÏëÈôó¼Ò¶¼Äܹ»ÓÐÒ»¸ö¿Í¹ÛµÄÈÏʶ¡£ReactiveCocoa ºÍ MVVM ²»Ó¦¸Ã±»Éñ»¯£¬ËüÊÇÒ»ÖÖÐÂÓ±µÄ±à³Ì¿ò¼Ü£¬Äܹ»½â¾ö¾ÉÓбà³Ì¿ò¼ÜµÄһЩÎÊÌ⣬µ«ÊÇÒ²»á´øÀ´Ò»Ð©ÐÂÎÊÌ⣬½ö´Ë¶øÒÑ¡£Èç¹û²»ÄÜʹºÃµÄ¼ÝÔ¦ ReactiveCocoa£¬Í¬Ñù»áÔì³É Controller ´úÂë¹ýÓÚ¸´ÔÓ£¬´úÂëÂß¼­²»Ò×ά»¤µÄÎÊÌâ¡£

×ܽá

ÓÐһЩÈË×ÜÊÇ×·¸Ï׿¼Êõ£¬ÓÐʲôм¼Êõ²»¹ÜÈýÆß¶þʮһÁ¢Âí¾ÍÓ㬽á¹û±»¸÷ÖÖ¿Ó¡£

ÓÖÓÐһЩÈË£¬×ÜÊǵ£ÐÄм¼Êõ´øÀ´µÄ¼¼Êõ·çÏÕ£¬²»Ô¸Òâѧϰ¡£½á¹ûÏÖÔÚ»¹ÓÐÈËÔÚÓà MRC ÊÖ¶¯¹ÜÀíÒýÓüÆÊý¡£

¶øÎÒÏë˵£¬ÎÒÃÇÐèÒª±£³ÖµÄÊÇÒ»¸öÓµ±§±ä»¯µÄÐÄ£¬ÒÔ¼°ÀíÐÔ·ÖÎöµÄ̬¶È¡£ÔÚм¼ÊõµÄÃæÇ°£¬²»Ã¤´Ó£¬Ò²²»Êؾɣ¬Ò»Çеľö²ß¶¼Ó¦¸Ã½¨Á¢ÔÚÈÏÕæ·ÖÎöµÄ»ù´¡ÉÏ£¬ÕâÑù²ÅÄÜÓ¦¶Ô¼¼ÊõµÄ±ä»¯¡£

 

   
3703 ´Îä¯ÀÀ       29
Ïà¹ØÎÄÕÂ

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

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

ÅäÖùÜÀí¡¢ÈÕ¹¹½¨Óë³ÖÐø¼¯³É
Èí¼þ¼Ü¹¹Éè¼Æ·½·¨¡¢°¸ÀýÓëʵ¼ù
µ¥Ôª²âÊÔ¡¢Öع¹¼°³ÖÐø¼¯³É
»ùÓÚAndroidµÄµ¥Ôª¡¢ÐÔÄܲâÊÔ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

ÖØ¹¹-ʹ´úÂë¸ü¼ò½àÓÅÃÀ
Visitor Parttern
ÓÉ±í¼°À￴ģʽ
Éè¼ÆÄ£Ê½Ëæ±ÊϵÁÐ
ÉîÈëdz³öÉè¼ÆÄ£Ê½-½éÉÜ
.NETÖеÄÉè¼ÆÄ£Ê½
Ïà¹ØÅàѵ¿Î³Ì

J2EEÉè¼ÆÄ£Ê½ºÍÐÔÄܵ÷ÓÅ
Ó¦ÓÃģʽÉè¼ÆJavaÆóÒµ¼¶Ó¦ÓÃ
Éè¼ÆÄ£Ê½Ô­ÀíÓëÓ¦ÓÃ
J2EEÉè¼ÆÄ£Ê½Ö¸ÄÏ
µ¥Ôª²âÊÔ+ÖØ¹¹+Éè¼ÆÄ£Ê½
Éè¼ÆÄ£Ê½¼°ÆäCSharpʵÏÖ

ijµçÁ¦¹«Ë¾ Éè¼ÆÄ£Ê½Ô­Àí
À¶ÍØÆË Éè¼ÆÄ£Ê½Ô­Àí¼°Ó¦ÓÃ
ÎÀÐǵ¼º½ UML & OOAD
ÌÀɭ·͸Ñз¢ÖÐÐÄ UML& OOAD
Öдïµçͨ Éè¼ÆÄ£Ê½Ô­Àí
Î÷ÃÅ×Ó Ç¶ÈëʽÉè¼ÆÄ£Ê½
 
 
 
¡¡