Design Patterns 学习笔记
重点关注
- MVC
- MVVM
- Coordinator
Model-View-Controller Pattern
如果只用MVC 模式,会在 controller 中放入太多逻辑,view controllers 会变得非常大,Massive View Controller
建立项目后,重构View的名称,建立MVC组文件( Command + Option + N ),将不同的文件放入组。然后告诉Xcode新的Info.plist的位置。
MVC
- Controller 负责在 model 和 view之间协调,将 model 值给view,处理 从 view 的IBAction调用。
- MVC 是个好的起点,但有一些限制,不是所有对象都可以分到MVC,有时Controller 会变得很大。
Delegation Pattern
一个 object 用另一个 helper 助手来提供数据或完成一个任务,而不是自己完成。
有三个部分组成
- 一个需要代理的对象,称为 delegating object
- 代理协议,定义了代理需要实现的方法
- 一个代理,实现代理协议的助手
什么时候使用?
将大的类分解,或者建立通用、可复用的组件。UIKit 中大量使用的 Delegation Pattern。大多以DataSource-名字(提供数据)和 Delegate-名字(接受数据或事件) 命名。
使用注意事项
不要过度使用,如果一个对象有多个代理,可能对象做得太多,最好把分解功能给不用的对象。
同时注意不要建立代理环。
Observer Pattern 观察模式
一个对象观察另一个对象的电话。Swift 5.1 中通过在 Combine 框架的Pulisher加入了语言级别的支持。
- Subscriber,是观察者,观察和接受更新
- Pubisher,被观察者,和发送更新
- Value
何时使用?
想要在另一个对象变化时接受数据。
通常和MVC一起使用,view controller 有 subscriber, model 有 publisher,model 在不知道view controller 类型的情况下可以和view controller 通讯。
Model-View-ViewModel (MVVM)
开始建立App时可以使用 MVC
Coordinator Pattern
何时使用?
解耦 View Controller,只有 Coordinator 知道 view controller。view controllers 可以重用,如果想要修改流程,只要新建一个 Coordinator就可以。
使用注意事项
如果是简单的App,用Coordinator Pattern 太过了,如果是复杂或长期的项目,能够提高你的 view controllers 的重用。