1. MVC
界面的刷新和数据的更改一律由控制器控制;数据包括数据本身和修改数据的方式
用户的操作被控制器听到,控制器去修改数据
数据改好了,控制器也会被通知,因此去刷新界面
这样做的好处:界面和数据都可以复用
讨论:MVC和MV的区别
MVC时C主导所有功能,包括收到User Action后解析用户行为,并且更新数据以及所有相应的View;
MV时没有了C,因此User Action会被直接发送给Model,经Model处理后,数据发生改变,View自然就变了;
2. Singleton
Apple自带的单例:UserDefaults.standard
, UIApplication.shared
, UIScreen.main
, FileManager.default
我们可以把全局只有一个的数据也设置成单例,比如Parser,或者拆开来说:Outline,Slide等等
3. Facade
把复杂的东西用一个(只有一个)简单的接口访问,这样修改复杂的东西也不会影响接口,用户调用起来也没啥烦恼
4. Decrator
给一个东西加功能,但不改变它本身的代码
两种实现方式:Delegation 和 Extension
Delegation : 表格本身有2个Delegation,一个告诉它有哪些数据以及每行显示什么内容,一个告诉它点击具体的一行之后是什么操作
Extension:有时加Extension可以使数据本身更适配
苹果自带的Delegation:
UITableView
, UITextView
, UITextField
, UIWebView
, UICollectionView
, UIPickerView
, UIGestureRecognizer
, UIScrollView
.