以前开发iOS程序的时候用的最多的是MVC的设计模式,这种软件架构的模式是由:模型(Model)【屏幕中展示的】、视图(View)【如何展示的】和控制器(Controller)【程序的数据,本质】三部分组成。具体的使用很简单,本质上来说就是:模型【Model】响应用户请求并返回响应数据,视图【View】负责格式化数据并把它们呈现给用户,业务逻辑和表示层分离,同一个模型可以被不同的视图重用,所以大大提高了代码的可重用性。这样使用起来十分的方便上手也比较快,只是最近有人突然问我MVC之间是怎么通讯的?不就是用户操作视图【View】通过控制器对象【Controller】传给数据模型对象,最终会创建或更改模型对象,当模型对象【Model】更改时,它会通知控制器【Controller】,控制器更新相应的视图对象【View】。这样就是它们之间通信的过程,总的来说就是V->C->M -> C -> V,但是具体呢?具体是通过什么更改的,又是通过什么接收的呢???下面这张图相信做过MVC开发的都见过
这张图看着也挺麻烦的各种标记,我做了一个简化版的,上图请看:
通过这个图看起来是不是很清晰明了,我还是简单的解释一下吧MVC的这种模式下Model和View之间是不能直接进行通信的,只能通过Controller传递,而Controller可以直接调用Model,而Model是通过Notification和KVO和Controller间接通信的【上面已经做了标注】,Controller又是通过outlet【注:outlet是控件的引用】直接连接到相应的View中,对View进行控制。View通过action-target、delegate、或者是datasource与Controller进行通信的。就这样MVC之间的通信机制就简单明了了;
最后再简单的提一下MVVM这种设计模式它是将Controller的位置替换为了ViewModel,也就是说在ViewController中View和Controlle之间都是绑定的,这样的话也就能直接将他们进行连接就可以了,这时候我们创建的ViewModel中就直接可以放进去那些所有“表示逻辑”的东西。这样就会简化Controller用一个可以简单的表示一下:
其实本质上还是MVC只是一些“表示逻辑”的代码的位置改变了,使代码更为简洁,这样在进行对Controller测试的时候由于代码的量减少,测试也是很方便的,其实MVVM目前就个人而言使用不多,不足之处还望指教。
欢迎转载,请注明转载和原文出处: http://www.cnblogs.com/windsSunShine/