设计模式概要

结构型: MVC、MVVM
创建型: 单例设计模式、委托协议模式(工厂模式)
行为型: 观察者设计模式··

1.MVC:

    Model:最基本的数据读写(转换)
    View: 只展示、处理非业务逻辑(动画效果、点击反馈、点击事件的开关保护)
    Controller: 网络请求,对Model进行读写操作,并将Model的数据转给View展示,处理View的刷新及页面跳转
  缺点:严格来说Model和View应该完全没有直接的联系,但是往往控制器传递给View的数据就是Model类,View的复用前提是传递进去的Model类相同(在理想的情况下,View和Model完全分离,如果视图不依赖某个模型,那么这个视图就可以被复用来展示不同的模型数据)

2.MVVM

    View--Controller--ViewModel--Model,控制器将View和ViewModel进行绑定
    Model: 最基本的数据读写
    ViewModel: 本质也是一个Model,访问Model层的数据,负责处理与页面相关的数据代码(列表、加载更多、搜索、删除、网络、缓存),然后供View层调用
    View:只展示、处理非业务逻辑。

3.单例:

    整个应用只有该类的一个实例,该实例有一个全局唯一的访问点;采用延迟加载的方式,在第一次用到的时候才去创建单例实例对象;便于管理,不浪费内存。
    GCD提供的dispatch_once函数,保证在block里创建单例的语句在整个应用的生命周期里只执行一次,下次再调用时,会返给你之前已经初始化好的实例。
    系统的单例有:UIApplication、NSUserDefaults、NSNotification、NSFileManager、NSBundle等(shared、mainBunle、default)。

4.委托模式

    代理、类别;类可以实现或不实现协议(接口)中的方法(UITableViewDelegate/UITableViewDataSource);将数据绑定和事件处理交给委托和协议处理,逻辑业务自己完成。

5.观察者模式

    一个对象状态改变,通知正在对他进行观察的对象,这些对象根据各自要求做出相应的改变.
    通知:addObserver、removeObserver;postNotification,观察者由自己注册
    KVO:只能观察对象属性值,观察者的注册是在被观察者的内部进行,观察者和被观察者都需要实现NSKeyValueObserving协议(NSObject默认实现),addObserver、-observeValueForkeyPath回调、removeObserver:forKeyPath移除

你可能感兴趣的:(设计模式概要)