没做过移动开发,一直无法理解MVC架构都是怎么实现的

千树之影 2016-08-08 02:22:25
MVC看起来简单,无非就是数据视图和控制分离。但细想之下,我却一直无法理解该怎么去具体实现。
在面向对象编程中,各模块都是层层封装的,上层模块会包含很多子模块。
一个子模块本身会包含数据和视图和控制类。但一个封装好的子模块在MVC框架中属于什么类呢?它算是数据类?视图类?还是控制类?

再具体的说,MVC框架中,各个数据类对象,视图类对象,控制类对象的是不是某个类X的成员变量?如果是,那这个类X本身属于什么类?总不可能所有的对象都是全局变量?
...全文
193 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
开发者_android 2016-08-11
  • 打赏
  • 举报
回复
深受框架的毒害呀,不要什么东西上来就用一个死概念给它框住。先抛开,写写后再想这个问题。
xiaohuh421 2016-08-11
  • 打赏
  • 举报
回复
View 显示数据, Modle保存数据, Control控制流程 下面是我的理解. 有错请指正 比如你点击一个按钮, 需要查询数据库中的一个表, 然后显示到ListView中 那么点击事件, 就是写在View中的, 点击事件内部不实现其它代码, 只是通知control, 你需要查询数据库, control就实现逻辑, 可能需要查询几个表, 还有一些条件判断, 比如用户是否登陆, 权限管理之类的. control就会根据逻辑, 具体去调用module查询数据库. module内部实现查询数据库的代码. 查询完成后,或者说是有错误发生时. control会通知View显示数据或者错误信息. 这样一个完整流程就完成了. View就只需要展示数据和获取用户事件, Control负责连接协调View与Module. Module专门负责处理数据
「已注销」 2016-08-11
  • 打赏
  • 举报
回复
Model:业务逻辑和实体模型 View:对应于布局文件 Controllor:对应于Activity MVC本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器。 工作原理:通过controller的控制去操作model层的数据,并且返回给view层展示 流程:当用户出发事件的时候,view层会发送指令到controller层,接着controller去通知model层更新数据,model层更新完数据以后直接显示在view 层上。 MVC的目的是:将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式
网络咖啡 2016-08-10
  • 打赏
  • 举报
回复
引用 6 楼 alanjet 的回复:
事实上MVC也并没有完全把model和View彻底地分离吧,所以为了解耦合才有了更好的MVP和MVVM吧
Model和View还是分离的比较彻底的,只是Controller和Model很多时候分不开,甚至简单的界面就没有Model
Alan_Mo 2016-08-10
  • 打赏
  • 举报
回复
事实上MVC也并没有完全把model和View彻底地分离吧,所以为了解耦合才有了更好的MVP和MVVM吧
Arnold9009 2016-08-08
  • 打赏
  • 举报
回复
这个其实没必要太纠结,很难完全分离
网络咖啡 2016-08-08
  • 打赏
  • 举报
回复
MVC其实是一种代码书写方式,把界面、逻辑控制和数据类分开写,方便以后的修改而已
ink_s 2016-08-08
  • 打赏
  • 举报
回复
引用 2 楼 baipv008 的回复:
[quote=引用 1 楼 ink_s 的回复:] 不必要分的这么清楚 就像一个按钮 他是一个视图 按钮上要显示的是数据 按下按钮对数据进行操作就是控制 ,但是一个activity即有按钮视图 又有对按钮的点击事件还有点击后的操作,根本不能把他分为某一个 。 mv c 只是一种思路 ,就像我们要做一个app,它既有界面还有数据存取还有对数据的操作,我们应该想着把数据存取整理在一起,提供存取方法,我们需要数据的时候就直接用这个方法就行了,至于它到底是怎么实现的,我们不用每次存取都去写一次。当按下按钮我们只需要一个处理后的结果时,我们也可以吧这个处理过程整理在一起,当我门要用时只需要调用就是了,也不是每次用的时候都写一次处理方法等等。
但是数据类,视图类,控制类之间是有访问限制的,例如控制类可以调用数据类,数据类就不能调用控制类。一个封装了数据,视图的类无法确定是什么类,也就无法确定它和其他类之间的访问关系[/quote] 对呀 就是用户通过视图去控制数据然后再把新的数据通过视图去显示出来 ,他们之间肯定是不能完全分开的 mv c只是提高工作效率的一种模式 ,但是你不能3个类完全分开,就像老板现在要做个社交app 比如qq ,它招了3个人 一个人做ui界面,一个人处理数据,一个建数据库,你不可能分给他们一人一个任务就让他们自己去各做各的了 。做数据库的他总得知道要哪些数据,这个数据库就是为了这个app做的,总不能是我这app要存一个用户名一个头像,你数据库却存2个时间。他们肯定是要确定之间的关系才去各做各的,总不能我这个功能是点击按钮跳转页面,你不加按钮给我加一个输入框吧。肯定是确认了互相的关系才去做自己做的那部分。
千树之影 2016-08-08
  • 打赏
  • 举报
回复
引用 1 楼 ink_s 的回复:
不必要分的这么清楚 就像一个按钮 他是一个视图 按钮上要显示的是数据 按下按钮对数据进行操作就是控制 ,但是一个activity即有按钮视图 又有对按钮的点击事件还有点击后的操作,根本不能把他分为某一个 。 mv c 只是一种思路 ,就像我们要做一个app,它既有界面还有数据存取还有对数据的操作,我们应该想着把数据存取整理在一起,提供存取方法,我们需要数据的时候就直接用这个方法就行了,至于它到底是怎么实现的,我们不用每次存取都去写一次。当按下按钮我们只需要一个处理后的结果时,我们也可以吧这个处理过程整理在一起,当我门要用时只需要调用就是了,也不是每次用的时候都写一次处理方法等等。
但是数据类,视图类,控制类之间是有访问限制的,例如控制类可以调用数据类,数据类就不能调用控制类。一个封装了数据,视图的类无法确定是什么类,也就无法确定它和其他类之间的访问关系
ink_s 2016-08-08
  • 打赏
  • 举报
回复
不必要分的这么清楚 就像一个按钮 他是一个视图 按钮上要显示的是数据 按下按钮对数据进行操作就是控制 ,但是一个activity即有按钮视图 又有对按钮的点击事件还有点击后的操作,根本不能把他分为某一个 。 mv c 只是一种思路 ,就像我们要做一个app,它既有界面还有数据存取还有对数据的操作,我们应该想着把数据存取整理在一起,提供存取方法,我们需要数据的时候就直接用这个方法就行了,至于它到底是怎么实现的,我们不用每次存取都去写一次。当按下按钮我们只需要一个处理后的结果时,我们也可以吧这个处理过程整理在一起,当我门要用时只需要调用就是了,也不是每次用的时候都写一次处理方法等等。

80,472

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧