³õ̽°²×¿MVVM¿ò¼ÜÉè¼Æ
Ò». ʲôÊÇMVVM?MVVMÊǽü¼¸ÄêÁ÷ÐеÄÒ»ÖÖÉè¼Æ¿ò¼Ü,»ùÓڸÿò¼ÜÉè¼ÆµÄÓ¦ÓóÌÐò¾ßÓÐÁ¼ºÃµÄ½âñîºÍ¿ÉÀ©Õ¹ÐÔ,´ó·ù½µµÍÁËά»¤³É±¾,Ìá¸ßÁ˳ÌÐòÔ±µÄ¿ª·¢Ð§ÂÊ.ÔÚÁ˽âMVVM¿ò¼Ü֮ǰ,ÎÒÃÇÓбØÒª»Ø¹ËÒ»ÏÂÆäËûÉè¼Æ¿ò¼Ü.
1. MVCģʽMVCģʽµÄÒâ˼ÊÇ,Èí¼þ¿ÉÒÔ·Ö³ÉÈý¸ö²¿·Ö.
ÊÓͼ£¨View£©£ºÓû§½çÃæ
¿ØÖÆÆ÷£¨Controller£©£ºÒµÎñÂß¼
Ä£ÐÍ£¨Model£©£ºÊý¾Ý±£´æ
¸÷²¿·ÖÖ®¼äµÄͨÐÅ·½Ê½ÈçÏÂ.

1.View´«ËÍÖ¸Áîµ½Controller
2.ControllerÍê³ÉÒµÎñÂß¼ºó,ÒªÇóModel¸Ä±ä״̬
3.Model½«ÐµÄÊý¾Ý·¢Ë͵½View,Óû§µÃµ½·´À¡
ËùÓÐͨÐŶ¼Êǵ¥ÏòµÄ.ÎÒÃÇ´«Í³µÄAndroid¿ª·¢¶¼ÊÇ»ùÓÚÕâÖÖģʽ.ÿһ²ã¿ÉÒÔ´ú±íÎÒÃdz£ÓõÄÈçÏÂ×é¼þ:
Model²ã: sqliteÊý¾Ý¿â, JavaBean, SharedPreference, sdcard,»ñÈ¡ÍøÂçÊý¾ÝµÄapiµÈ
View²ã: xml²¼¾ÖÎļþ,×Ô¶¨Òå¿Ø¼þµÈ
Controller²ã: ActivityµÈ
´Ë´¦ÐèҪעÒâµÄÊÇ,ÔÚ´«Í³µÄMVCÉè¼ÆÄ£Ê½ÖÐ,
ActivityÊôÓÚController²ã¶ø²»ÊÇView²ã,ÒòΪActivity¼´³Ðµ£ÁËÊý¾Ýµ÷ÓÃ,Ò²³Ðµ£Á˽çÃæÕ¹Ê¾,Ï൱ÓÚViewºÍModelÖмäµÄе÷Æ÷.ºÜ¶à³õѧÕß¶¼»áÎóÈÏΪActivityÊôÓÚView²ã.µ±È»,ÕâÖÖ˵·¨½öÏÞÓÃMVCģʽ,»»×öÆäËûģʽ¾Í²»Ò»¶¨ÁË!
2. MVPģʽMVCģʽÆÕ¼°ÁËÒ»¶Îʱ¼äÖ®ºó,Öð½¥±©Â¶³öһЩÎÊÌâ.±ÈÈçÎÒÃÇ·¢ÏÖ,
ActivityÖÐдµÄ´úÂëÌ«¶à,ÓÐʱºòÒ»¸öActivityÉõÖÁ´ïµ½ÁËËÄÎåǧÐдúÂë,ά»¤ÆðÀ´¼«Îª²»±ã.ÔÒòÒ²ºÜÃ÷ÏÔ,¾ÍÊÇActivity¼È²ÎÓëapi·ÃÎʺÍÊý¾Ýµ÷ÓÃ,ÓÖ²ÎÓëÁ˽çÃæµÄ¸üÐÂ,Ö°ÄÜ»®·Ö²»Ã÷È·,ûÓÐÍêȫʵÏÖ½âñî.ÎÒÃǵÄÏë·¨ÊÇ,Äܲ»ÄÜÈÃActivityÖ»×ö½çÃæÏìÓ¦ºÍ¸üÐÂ,ÆäËûÒµÎñÂ߼ȫ²¿ÓÉÁíÍâÒ»¸öµ¥¶ÀÄ£¿éÀ´Íê³É?ÓÚÊÇMVPµ®ÉúÁË.
MVPģʽ½«Controller¸ÄÃûΪPresenter,ͬʱ¸Ä±äÁËͨÐÅ·½Ïò.

1.¸÷²¿·ÖÖ®¼äµÄͨÐÅ,¶¼ÊÇË«ÏòµÄ.
2.ViewÓëModel²»·¢ÉúÁªÏµ,¶¼Í¨¹ýPresenter´«µÝ.
3.View·Ç³£±¡,²»²¿ÊðÈκÎÒµÎñÂß¼,³ÆÎª"±»¶¯ÊÓͼ"£¨Passive View£©,¼´Ã»ÓÐÈκÎÖ÷¶¯ÐÔ,¶øPresenter·Ç³£ºñ,ËùÓÐÂß¼¶¼²¿ÊðÔÚÄÇÀï.
µ±ÕâÑùµ÷ÕûÁËÖ®ºó, Activity¾Í´¿´âÊôÓÚView²ãÁË,ËùÓÐÒµÎñÂ߼ȫÓÉPresenterÀ´Íê³É.µ±View½çÃæ±»Óû§²Ù×÷ʱ(±ÈÈç°´Å¥µã»÷), View²ã¾Í»áµ÷ÓÃPresenterÍê³ÉÏà¹ØÒµÎñÂß¼,¶øPresenterÍê³ÉÁËÖ®ºó,¾Í»á½«½á¹ûÒԻص÷µÄÐÎʽ´«µÝ¸øView²ã,ÓÉView²ãÍê³É½çÃæË¢ÐÂ.¾ßÌå´úÂëÈçºÎʵÏÖÎҾͲ»¶à˵ÁË,ÒòΪÎÒÃǽñÌìµÄÖØµãÊÇMVVM
3. MVVMģʽµ±ÎÒÃDzÉÓÃMVPģʽ֮ºó,·¢ÏÖActivity¼¸ºõûɶÊ¿É×öÁË,ÎÒÃǵÄÏîÄ¿´úÂë²ã¼¶Ò²ÇåÎúÁË,Ò²ºÃά»¤ÁË.µ«ÊÇMVPÒ²ÓÐȱµã,±ÈÈç,ΪÁËʵÏÖMVP,ÎÒÃÇÐèÒª¶îÍâÔö¼ÓºÃ¶à½Ó¿ÚºÍÀà,±ÈÈç,Ò»¸öActivityÐèÒª¶ÔÓ¦Ò»¸öPresenterÀàºÍPresenter½Ó¿Ú,ͬʱΪÁË·½±ãActivityºÍPresenter½øÐÐͨÐÅ,»¹µÃÔÙ¶¨ÒåÒ»¸ö»Øµ÷½Ó¿ÚIView,Ò²¾ÍÊÇ˵,ÿһ¸öActivity¶¼ÐèÒª¶îÍâÔö¼ÓÁ½¸ö½Ó¿ÚºÍÒ»¸öÀà,ÎÞÒÉÌá¸ßÁË´úÂëÁ¿.¶øMVVMµÄµ®Éú,¾Í½â¾öÁËÕâ¸öÎÊÌâ!
MVVMģʽ½«Presenter¸ÄÃûΪViewModel,»ù±¾ÉÏÓëMVPģʽÍêȫһÖÂ.

ΨһµÄÇø±ðÊÇ,Ëü²ÉÓÃË«Ïò°ó¶¨£¨data-binding£©£ºViewµÄ±ä¶¯,×Ô¶¯·´Ó³ÔÚViewModel,·´Ö®ÒàÈ».
ÓÐûÓÐ×¢Òâµ½, MVVMºÍMVP¼¸ºõÊÇÒ»ÑùµÄ,ΨһµÄ²»Í¬¾ÍÔÚÓÚViewºÍViewModelÖ®¼äµÄÄǸùÏß, MVPÊÇÁ½¸ù,±íʾViewµ÷ÓÃPresenterÖ´ÐÐÂß¼,Presenterµ÷ÓÃViewÀ´·µ»ØÊý¾Ý,¸üнçÃæ;MVVMÖÐÖ»ÓÐÒ»¸ùÏßÁ½¸ö¼ýÍ·,´ú±íµÄÊÇViewºÍViewModelË«Ïò°ó¶¨,×Ô¶¯Í¬²½Êý¾Ý,ÎÞÐèÊÖ¶¯µ÷ÓÃÏà¹Ø·½·¨½øÐÐͨÐÅ,´Ó¶ø¼õÉÙÁË´úÂëÁ¿.¶øÕâÖÖË«Ïò°ó¶¨µÄ»úÖÆ,¶¼¹é¹¦ÓڹȸèÍÆ³öµÄDataBindingµÄй¦ÄÜ.ÏÂÃæÎÒÃÇÀ´Ñо¿Ò»Ïµ½µ×ʲôÊÇDataBinding.
±¾ÎİæÈ¨¹éÀÖÓã²¥¿ÍAndroidÅàѵѧԺËùÓУ¬»¶Ó×ªÔØ£¬×ªÔØÇë×¢Ã÷×÷Õß³ö´¦¡£Ð»Ð»£¡
×÷ÕߣºÀÖÓã²¥¿ÍAndroidÅàѵѧԺ
Ê×·¢£ºhttp://www.itcast.cn/Android