• 最熟悉的陌生人MVC


          以前开发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/

     【一些处理数据逻辑和视图逻辑的,初始化viewmodel】

  • 相关阅读:
    Owin
    C#不区分大小写的字符串替换(Replace)函数
    如何创建测试程序调试nginx数据结构
    一张脑图说清 Nginx 的主流程
    gdb常用命令记录
    nginx的configure流程
    c 编译器大全
    PHP 的 uniqid 函数产生的 id 真的是唯一的么?
    UUID那些事
    PHP 编码规范
  • 原文地址:https://www.cnblogs.com/windsSunShine/p/5090165.html
Copyright © 2020-2023  润新知