前言:回忆下MVC
这是维基百科的解释Link:https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller
稍作修改。应该是这样的
一直以为android是很好的支持了MVC。我一直都觉得这很怪。到底算不算MVC呢?
答案是肯定的。。。
先看下android项目的文件目录结构
无疑问的确定View
Android有res,包含了layout, values, xml, anim。这是可以归属到View去的。
纠结的Control
每个Activity都包含了一个Window。这个Window中有DecorView。DecorView便是所有View的载体。 页面的逻辑处理就在Activity中。。。为什么要纠结的认为这不是个C呢?等下说
Model
这部分Android跟IOS都一样,没有定义。这需要我们自己去实现,所以,我们就变得纠结了,Activity的包容完全可以实现这些。
回头看下为何纠结Activity不是个Controller?
就是因为Activity实现了太多,甚至实现了很多Model的功能,导致Activity臃肿。。。
错觉就来了。。。。
Android的V,C有部分是在Activity中,但从功能划分,Activity只应该有Controller的部分。而事实上,Activity负责着View跟Controller的桥接。Activity还得稍微切割一下。
最终的Model更新View部分的代码,看似通过Controller(Activity)进行,可以理解成Model---update---》View