美文网首页
Head First 设计模式(待)

Head First 设计模式(待)

作者: 费宇超 | 来源:发表于2017-05-15 16:44 被阅读32次

    观察者模式
    http://www.runoob.com/design-pattern/observer-pattern.html
    http://www.jianshu.com/p/d55ee6e83d66
    观察者不需要时刻盯着被观察者(例如A不需要每隔1ms就检查一次B的状态),二是采用注册(Register)或者成为订阅(Subscribe)的方式告诉被观察者:我需要你的某某状态,你要在它变化时通知我。采取这样被动的观察方式,既省去了反复检索状态的资源消耗,也能够得到最高的反馈速度。

    类似的观察者,在iOS 中和 Java中都有实现。Java中有两种:通知由通知者主动发出,另一个种是被通知者主动去拉取最新状态(应该也有不同的实际应用场景吧)

    在iOS中KVO的本质就是监听对象的属性进行赋值的时候有没有调用setter方法,具体如下:1:KVO的本质就是监听对象的属性进行赋值的时候有没有调用setter方法. 如果有调用setter方法, 就会接收到属性变更的通知, 反之则没有.2:当某个类的实例对象的key第一次被观察时,系统就会在运行期动态地创建该类的一个派生类NSKVONotifying_类名,在这个派生类中重写该类中被观察的属性的 setter 方法。
    如果我们自己要实现这个功能的话,只需要按葫画瓢,1先构建一个对象的派生类。2使当前对象的isa指向新的派生类,就会调用派生类的set方法。3重写派生类的set方法,在set方法中拿到观察者(使用运行时关联观察者这个属性)。4每次重写set方法,都调用观察者的ml_observeValueForKeyPath方法。实现时刻监听。
    http://www.cocoachina.com/industry/20140107/7667.html

    装饰者模式?可能是指category,比delegate的优势在于静态决定,组合的做法扩展,运行时动态扩展。

    工厂模式...
    其实吧,以前没有这个概念,但是一直在使用,比如定义一个basemodel生物都具有属性生存,子类人,狗,猫,再去继承这一个大类。自这么做的好处是解耦和易于修改。好像理解不全面:
    http://www.jianshu.com/p/8cf0b9804e1b 抽象工厂
    http://www.jianshu.com/p/750b82fa6a62
    工厂方法模式:每个抽象产品派生多个具体产品类,每个抽象工厂类派生多个具体工厂类,每个具体工厂类负责一个具体产品的实例创建;

    抽象工厂模式:每个抽象产品派生多个具体产品类,每个抽象工厂派生多个具体工厂类,每个具体工厂负责多个(一系列)具体产品的实例创建。

    反射与映射 反射,在OC中json转换成model是最好的体现,缺点是逻辑没有暴露出来,不易维护,还有就是效率低;映射1对多,应该就是coredata存储中1个属性对应其他多个的意思。

    单件模式...
    之前有看到过不要使用太多的单例,那么在程序中要实现一个类似单例的才具有的功能,还有什么好的替代方法呢?::
    单例模式是什么可以去看《设计模式》,在一些公共资源上可以使用单例模式来全局访问,除了这个我建议尽量不要使用单例

    之前还看到一种self-manager模式
    就是尽量一个器件的逻辑交给自己去实现,成为一个个体,链接如下
    http://blog.sunnyxx.com/2015/12/19/self-manager-pattern-in-ios/

    命令模式?
    适配者和外观模式?
    模板方法模式?
    迭代器组合模式
    状态模式
    代理模式
    复合模式
    真实世界模式

    相关文章

      网友评论

          本文标题:Head First 设计模式(待)

          本文链接:https://www.haomeiwen.com/subject/sqmhxxtx.html