iOS常用开发模式总结:
1、代理模式
应用场景:当一个类的某些功能需要由别的类来实现,但是又不确定具体会是哪个类实现。
优势:解耦合
实例:tableview的 数据源delegate,通过和protocol的配合,完成委托诉求。
2、观察者模式
应用场景:一般为model层对controller和view进行的通知方式,不关心谁去接收,只负责发布信息。
优势:解耦合
实例:Notification通知中心,注册通知中心,任何位置可以发送消息,注册观察者的对象可以接收。
kvo,键值对改变通知的观察者。
3、MVC(Modal View Controller)模式
应用场景:通过数据模型,控制器逻辑,视图展示将应用程序进行逻辑划分。model-即数据模型,view-视图展示,controller进行UI展现和数据交互的逻辑控制。
优势:使系统,层次清晰,职责分明,易于维护
4、单例模式
应用场景:确保程序运行期的某个类只有一份实例,用于进行资源共享控制。
优势:使用简单,延时求值,易于跨模块
实例:[UIApplication sharedApplication]。
注意事项:确保使用者只能通过 getInstance方法才能获得单例类的唯一实例,返回的只是此单例类的唯一静态变量。
5、策略模式
应用场景:定义算法族,封装起来,使他们之间可以相互替换。策略模式是一种定义一系列算法的方法,从概念上看,所有这些算法完成的都是相同的工作,只是实现不同,他可以以相同的方式调用所有的算法,减少了各种算法类和使用各算法类之间的耦合。
优势:使算法的变化独立于使用算法的用户
实例:排序算法,NSArray的sortedArrayUsingSelector;
6、工厂模式
应用场景:工厂方式创建类的实例,多与proxy模式配合,创建可替换代理类。如NSString、NSArray、NSDictionary以及NSNumber都运作在这一模式下,它是接口简单性和扩展性的权衡体现,在我们完全不知情的情况下,偷偷隐藏了很多具体的实现类,只暴露出简单的接口。
注意事项:项目初期,软件结构和需求都没有稳定下来时,不建议使用此模式,因为其劣势也很明显,
增 加了代码的复杂度,增加了调用层次,增加了内存负担。所以要注意防止模式的滥用。