设计模式与架构

何为架构?
架构(Architecture)
软件开发的设计方案
类与类之间的关系、模块与模块的关系、客户端与服务端的关系
经常听到的架构名词
MVC、MVP、MVVM、VIPER、CDD(这些设计模式一般都是在架构里的界面层使用的)
三层架构:界面层(展示UI页面等) -> 业务层(执行一些业务操作比如:加载数据) -> 数据层(获取数据,本地数据或者是网络数据);
四层架构:界面层 -> 业务层 -> 网络层 -> 本地数据层;
等等

MVC - Apple版(初级版)
优点:View、Model可以重复利用,二者可以独立使用互不依赖
缺点:Controller的代码过于臃肿

MVC - 变种(最常用的)
优点:对controller进行瘦身,将view内部的细节封装起来了,外界不知道view内部的具体实现
缺点:view依赖于model

MVP
MVP和MVC-Apple版类似,只不过是把中间的Controller换成了Presenter(英文主持人的意思)。然后Controller里面只调用Presenter就可以了,实现了Controller的更大的瘦身。

MVVM
View里面任然不拥有Model,但是拥有ViewModel;ViewModel里面进行数据请求并对参数进行赋值,以供View调用的时候使用
MVVM+RAC、MVVM+FBKVOController; RAC框架还是比较重的,RAC和FBKVOController都是用来在view里面监听viewModel里面的数据变化。view里面不拥有model,但是拥有viewModel,可以从vviewmodel里面取想要的值赋值给view里面的一些控件。

MVC、MVP、MVVM等设计模式都应用于架构里的页面层。
设计模式:
1.设计模式(Design Pattern)
是一套被反复使用、代码设计经验的总结
使用设计模式的好处是:可重用代码、让代码更容易被他人理解、保证代码可靠性
一般与编程语言无关,是一套比较成熟的编程思想
2.设计模式可以分为三大类
创建型模式:对象实例化的模式,用于解藕对象的实例化过程
比如:单例模式(最常见)、工厂方法模式,等等
结构型模式:把类或对象结合在一起形成一个更大的结构
比如:代理模式(这里的代理不是delegate)、适配器模式、组合模式、装饰模式,等等
行为型模式:类或对象之间如何交互,以及划分责任和算法
比如:观察者模式(最常用)、命令模式、责任链模式,等等

推荐学习资料:
数据结构与算法
严蔚敏-《数据结构》
《大话数据结构与算法》
网络
《HTTP权威指南》
《TCP/IP详解卷1:协议》
架构与设计模式
https://github.com/skyming/Trip-to-iOS-Design-Patterns
https://design-patterns.readthedocs.io/zh_CN/latest/