美文网首页
MVC对MVC对MVC

MVC对MVC对MVC

作者: anjohnlv | 来源:发表于2017-03-03 11:13 被阅读23次

    MVC的主要目的即是将数据、逻辑、界面分离,从而使产品的结构更清晰。那么,应该如何分离才是最好最高效的呢?

    第一种

    view监听自己的事件,并回调controller,controller处理事件,并控制view显示。

    第二种

    view控制自己的显示,只通知controller处理数据

    第三种

    view将控件暴露给controller,由controller来监听view的事件,处理并控制view的显示

    第一种

    view与model,与controller分离。(不完全,view会耦合自身的事件逻辑,下同)

    第二种

    view与controller分离,但会与model耦合。

    第三种

    view严格与model,与controller分离。

    举例:controller控制一个view,view上有一个button,点击button,会弹出一个tableView,tableView数据异步获取,将选择tableViewItem传给controller处理。

    第一种

    view监听button点击事件,并将事件回调给controller,controller从model取到数据,控制view显示tableView并显示数据,tableView监听自己的选择事件,并将选择item回调给controller,完成目标。其中controller同时需要监听view和tableView,view需要提供显示tableView和tableView加载数据的接口。

    第二种

    view监听button点击事件,从model取出数据并显示tableView。同时监听tableView的选择事件,并将选择item回调给controller,完成目标。其中controller需要监听view,view需要监听tableView。

    第三种

    controller监听button点击事件,从model取到数据并显示tableView。同时监听tableView的选择事件,完成目标。其中controller需要监听button和tableView。

    代码结构:

    第一种

    view负责界面的初始化,包括view,button,tableView;负责控件的监听,包括button点击,tableView选择。

    controller负责逻辑的控制,tableView显示;负责view的监听,包括view回调需要显示tableView,view回调最终选择项。

    model负责数据的获取,tableView数据。

    第二种

    view负责界面的初始化,包括view,button,tableView;负责控件的监听,包括button点击,tableView选择。负责控件的逻辑,tableView显示。

    controller负责view的监听,监听最终结果。

    model负责数据的获取,tableView数据。

    第三种

    view负责界面的初始化,包括view,button,tableView;

    controller负责负责控件的监听,包括button点击,tableView选择;负责控件的逻辑,tableView显示。

    model负责数据的获取,tableView数据。

    第一种

    view负责初始化和事件监听,controller负责管理和控制view。

    第二种

    view负责主要代码,controller只监听最终结果。

    第三种

    view只负责初始化,controller负责主要代码。

    个人感觉,第三种是最标准的分离方式,但是大量的逻辑代码堆积在了controller里,使mvc变成了Massive View Controller;第二种是最方便的分离方式,但是view直接从model取数据,并不符合mvc的要求;第一种比较折中。

    那么哪一种才是最好最高效的呢?

    相关文章

      网友评论

          本文标题:MVC对MVC对MVC

          本文链接:https://www.haomeiwen.com/subject/yimlyttx.html