设计模式: 类簇
在iOS的Foundation框架中,类簇是一种常用的设计模式,将一些相近的,私有的,具体的子类组合在一个实体的抽象类下面。平时常用的三大类,NSString,NSArray,NSDictionary 都是类簇,通过这些类创建的对象都是其子类对象的实例化对象,并不是这些类本身的实例化。
NSString * str = [[NSString alloc]initWithCString: "2" encoding:0];
NSLog(@ "%@" ,[str class ]);
结果如下:真实的对象是NSString的子类__NSCFString进行实例化的。
真是类型设计的优势:
NSNumber:在创建数字对象的时候,如果是int值,需要一个IntNumber的类,float值,需要一个FloatNumber类,如果foundation框架真这么设计的话,那么你现在就痛苦了,要记住好多这样相似的类,调用方法时也要相应的对象调其内的方法,这使开发变得更加繁琐,并且对于开发者来说,并不需要知道具体我创建了什么类,只想让他完成既定的方法。
应用场景:
(1)当一个类并不知道要创建的具体对象是什么,交由子类处理
(2)当一些类有相似的行为和结构,只是具体实现不同时,可以抽象出工厂
(3)使用者并不在乎具体类型,只在乎接口约定的行为,并且这种行为有个体差异
参考:
工厂设计模式的探讨——iOS类簇的应用分析_weixin_34302561的博客-CSDN博客
iOS设计模式之类族(class cluster) - 俊华的博客 - 博客园 类簇的详解 👍👍
iOS应用架构谈 网络层设计方案 - Casa Taloyum
iOS中常用的设计模式_小毅哥哥的博客-CSDN博客_ios 设计模式 这篇写的几个模型很好理解
单例置为nil 没用 : iOS 设置单例为nil_jihengcong的博客-CSDN博客
代理是一对一的,响应栈内最近一个代理对象(多为传值,相连的页面)
观察者模式(通知机制,KVO机制)
观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。 简而言之,就是A和B,A对B的变化感兴趣,就注册A为观察者,当B发生变化时通知A,告知B发生了变化。这个也叫做经典观察者模式。
KVC (不是设计模式,只是个键值对编码方法)
网友评论