Coder Social home page Coder Social logo

Comments (3)

lovemo avatar lovemo commented on July 24, 2024

MVVM是一定需要Controller的参与的,虽然MVVM在一定程度上弱化了Controller的存在感,并且给Controller做了减负瘦身(这也是MVVM的主要目的)。但是,这并不代表MVVM中不需要Controller,MMVC和MVVM他们之间的关系应该是这样:
View <-> C <-> ViewModel <-> Model,所以使用MVVM之后,就不需要Controller的说法是不正确的。严格来说MVVM其实是MVCVM。可以得知,Controller夹在View和ViewModel之间做的其中一个主要事情就是将View和ViewModel进行绑定。在逻辑上,Controller知道应当展示哪个View,Controller也知道应当使用哪个ViewModel,然而View和ViewModel它们之间是互相不知道的,所以Controller就负责控制他们的绑定关系,所以叫Controller/控制器就是这个原因。

from mvvmframework.

youngsoft avatar youngsoft commented on July 24, 2024

你说对了,前面我已经强调过M是业务模型,不是数据模型。对于ViewModel这么个命名法就是违背解耦的初衷,既然V和M没有关系,那么为何要有一个VM这个东西。正真的MVC模型的运行模式是:V负责展示也就是视图,可以用XIB构造也可以用代码构造,并且和C和M都是无关的;M则是业务逻辑的处理,包括数据存储,网络交互,业务解析,这部分也是和V,C是无关的,做得好的M层甚至可以让android和IOS共用,并且可以单独为LIB库; 而剩下的C层就是负责调用M层提供的服务,并通知视图更新显示,这里面C也可以和M,V无关的,请问这种这么优秀的模式怎么会说成C层是膨胀的呢。根本的原因就是很多编程者根本不理解MVC的初衷,而是以为M就是简单的数据模型,而把所有网络交互,业务,数据存储都放入到C层,这就是对MVC本质理解的本末倒置。

from mvvmframework.

kira2015 avatar kira2015 commented on July 24, 2024

都说得不错

from mvvmframework.

Related Issues (13)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.