-
设计模式
是一套能被反复使用、更方便他人理解、保证代码可靠性的经验总结
一般与编程语言无关,是一套比较成熟的编程思想
可以分为三大类
- 创建型:对象实例化的模式,用于解耦对象的实例化过程;
单例模式、工厂方法模式等等 - 结构型:把类或对象结合在一起形成一个更大的结构;
代理模式、适配器模式、组合模式、装饰模式等等 - 行为型:类或对象之间如何交互及划分责任和算法;
观察者模式、命令模式、责任链模式等等。
iOS中常用单例、代理、观察者模式
-
架构
一般比设计模式大,整个应用程序分为多少层架构;
将类分成很多角色(M、V、C、P、VM等等);
-
MVC
- Controller创建并持有View,View通知**Controller处理事件;
(如View内部的点击、滚动事件,通知Controller去处理这些业务逻辑) - Controller发送网络请求或解析、加载数据,并且Controller拥有和管理 Model
- Model发生改变,Controller会将最新的Model显示到View上面去
- Controller是Model和View的桥梁,Model和View相互独立
优点:
View、Model可以重复利用,可以独立使用;
缺点:
Controller的代码过于臃肿
-
MVP
1、 相当于用Presenter代替了MVC的Controller,本来Controller做的事情,现在交给Presenter做了,View的点击事件也交给presenter
2、控制器和presenter互相拥有,但presenter拥有weak类型的控制器,防止循环引用;
3、Model和View相互独立,View不拥有Model,又不想暴露控件,所以使用方法更新数据
优点:
Presenter代替了MVC中的Controller,View、Model重复利用,可以独立使用;
缺点:
Presenter和View的耦合性太高,每个View对应一个Presenter,导致类太多
-
MVVM
MVP和MVVM有很相似
共同点:
对Controller进行瘦身,将View和Model的一些业务逻辑放在Presenter或ViewModel中;
不同点:
属性监听绑定;
View拥有ViewModel并监听ViewModel内部属性的改变,当属性改变时会更新View
优点:
对Controller进行瘦身,实现双向绑定
缺点:
类会变多、bug不便调试
分层设计
分层MVC、MVP、MVVM属于界面层,分层设计是不同层级分别处理所在层级的任务
网友评论