2015-09-26
MVC 模型-视图-控制器,这个设计模式的目的很明确 让View层和Model层 独立起来、解耦合
然而这个概念在我们的代码中已经被滥用或是错用了,因为我看到的 仅仅是从项目的工程目录结构上 分个文件夹,
他们是这样做的:
(1)把数据结构相关类放到Model文件夹中(仅仅是做数据结构定义)
(2)把View、xib相关放到View文件夹中 (把View当Controller来用了)
(3) 把UIViewController派生类 放到Controller文件夹中 (把UIViewController和Controller混淆了)
先举个经典的例子 来反映MVC设计模式的用意
UITableViewController
data (Model) ,tableView(UIView), UITableViewController (Controller)
解释:其中data 和 tableView 是完全独立的 即没有任何交叉(耦合),UITableViewController做的事情 仅仅是把data和tableView联系起来
~理解这个东西,设计好你自己的代码,是多么开心的意见事情~
参考链接:
http://www.cocoachina.com/industry/20140716/9152.html
截取其中的一段,也是我的困惑
“
苹果使用的MVC的定义是这么说的:所有的对象都可以被归类为一个model,一个view,或是一个controller。就这些。那么把网络代码放哪里?和一个API通信的代码应该放在哪儿?
你可能试着把它放在model对象里,但是也会很棘手,因为网络调用应该使用异步,这样如果一个网络请求比持有它的model生命周期更长,事 情将变的复杂。显然也不应该把网络代码放在view里,因此只剩下controller了。这同样是个坏主意,因为这加剧了厚重View Controller的问题。那么应该放在那里呢?显然MVC的3大组件根本没有适合放这些代码的地方。
”