• iOS设计模式与架构


    开局先来几道面试题:

    • 讲讲MVC、MVVM、MVP几种设计模式,以及你在项目里面具体是怎么写的
    • 你自己用过哪些设计模式
    • 一般开始做一个项目,你的架构是如何思考的

    架构

    架构(architecture)

    软件开发中的设计方案
    架构可大可小,类与类之间的关系、模块与模块之间的关系、客户端与服务端的关系都可归结为架构

    没有哪一个架构是最好的,只有最适合自己的

    常见的架构名词
    MVC、MVP、MVVM、VIPER、CDD
    还有
    三层架构、四层架构

    MVC

    MVC分两个版本,一种是苹果版本的,一种是常用版本的,具体有什么相同与不同呢?我们往下看。

    MVC-苹果版

    MVC是指的:
    Model
    View
    Controller

    三者的关系大致是:
    在这里插入图片描述

    Controller拥有View(直接拥有)
    View发生改变可以通知到Controller(例如:tableview的代理)

    Controller拥有Model(直接拥有)
    Model发生改变可以通知到Controller(通知)

    Controller是Model和View的桥梁
    Model和View没有交互

    优点:View和Model可以重复利用,可以独立使用
    缺点:Controller的代码过于臃肿

    苹果的UITableViewContorller使用的是这种方法,使用这种方法,Model可以随便写,不拘泥于格式和名字以及model数量,随便改,都不会影响到View层(tableView)的东西。

    MVC-常用版

    三者的关系大致是:

    在这里插入图片描述

    Controller拥有View(直接拥有)
    View发生改变可以通知到Controller(例如:tableview的代理)

    Controller拥有Model(直接拥有)
    Model发生改变可以通知到Controller(通知)

    View可以直接拥有Model(直接拥有),而不需要必须经过Controller

    优点:对Controller进行瘦身,将View内部的细节封装了起来,外界不知道View内部的具体实现
    缺点:View依赖于Model

    使用这种方法,View可以直接拥有Model,Controller被解放出来,缺点是View和Model进行了绑定,以后再重复使用View大概率需要同样的Model。

    MVP

    MVP是指的:
    Model
    View
    Presenter:主持人,充当一个中间角色
    三者的关系大致是:

    在这里插入图片描述

    跟MVC-苹果版差不多。Model与View不直接交互
    把一部分业务放在了Presenter中

    Presenter继承NSObject
    Controller拥有Presenter
    Presenter弱引用Controller
    差不多是Presenter做了部分Controller的工作,去整合Model和View

    MVVM

    MVVM是指的:
    Model
    View
    VieModel
    三者的关系大致是:

    在这里插入图片描述

    跟MVP看着差不多,但是还是有区别。

    VieModel继承NSObject

    Controller拥有ViewModel
    ViewModel弱引用Controller

    View拥有ViewModel
    ViewModel弱引用View

    MVVM核心的地方,有一个属性监听

    MVVM有一个特点是,ViewModel上的属性值,跟Model属性值名一样
    ViewModel上的属性值改变(Model赋值),要告诉View上的东西做响应的改变
    方法有:RAC、KVO、Facebook推出的KVOController
    RAC比较重量级
    KVO麻烦一点点
    Facebook推出的KVOController,使用简单

    因此,在View上,对ViewModel上的属性值进行监听,如果ViewModel上的属性值改变了,那么,View上的东西做响应的改变。
    这就是View跟ViewModel之间的交互

    三层架构

    在这里插入图片描述

    四层架构

    在这里插入图片描述

    设计模式

    设计模式(Design Pattern)
    是一套被反复使用、代码设计经验的总结
    使用设计模式的好处是:可重用代码、让代码更容易被他人理解、保证代码的可靠性
    一般与编程语言无关,是一套比较成熟的编程思想

    设计模式可以分为三大类:

    创建型模式:对象实例化的模式,用于解耦对象的实例化过程
    例如:单例模式、工厂方法模式等等

    结构型模式:把类和对象结合在一起形成一个更大的结构
    例如:代理模式、适配器模式、组合模式、装饰模式等等
    (代理模式不是指的delegate,而是指的NSProxy)

    行为型模式:类或对象之间如何交互,及划分责任和算法
    例如:观察者模式(KVO)、命令模式、责任链模式等等

    学习资料推荐

    数据结构与算法:
    严蔚敏《数据结构》
    《大话数据结构与算法》
    《恋上数据结构1、2、3季》

    网络:
    《HTTP权威指南》
    《TCP/IP详解卷1:协议》

    架构与设计模式:

    Trip-to-iOS-Design-Patterns
    图说设计模式

  • 相关阅读:
    坑爹的A标签 href
    JS 遍历 json key ,获取设置可变的key
    js to json字符串
    js eval深入
    Js 省市联动
    JS with用法
    JS
    js 内置对象常用方法
    django-pure-pagination 分页插件
    OpenStack 网络服务 Neutron 私有网络构建(十九)
  • 原文地址:https://www.cnblogs.com/r360/p/15958694.html
Copyright © 2020-2023  润新知