登录 立即注册
金钱:

Code4App-iOS开发-iOS 开源代码库-iOS代码实例搜索-iOS特效示例-iOS代码例子下载-Code4App.com

查看: 54|回复: 6

iOS开发设计模式详解,ios runloop详解

[复制链接]

147

主题

147

帖子

734

金钱

手工艺人

发表于 2018-1-11 14:47:11 | 显示全部楼层 |阅读模式

        

        在软件开发中一般认为有23种设计模式(design pattern),这是软件开发中的较高的境界了。在iOS开发中最常用的有哪些设计模式呢?我们今天来分析一下:

        一.【代理模式】

        使用场景:当一个类的某些功能需要由别的类来实现,但是又不确定具体会是哪个类实现。其实就像是Java中的接口,类可以实现或者不实现协议(接口)中的方法。

        优点:低耦合。

        使用原则:开闭原则。

        实例:TableView的UITableViewDataSource、UITableViewDelegate,通过和protocol的配合,完成代理。

        

        二.【观察者模式】

        使用场景:一般是对model层进行观察,Controller和View进行通知的方式,只负责发送消息,不关系谁去接收。一个对象状态改变,通知正在对他进行观察的对象,这些对象根据各自的要求做出响应。

        优点:低耦合。

        使用原则:接口隔离原则,开闭原则。

        实例:KVO键值观察者。通知机制。

        

        三.【MVC模式】

        使用场景:整个iOS App系统架构就应该按照MVC模式。

        优点:层次清晰、易于维护。

        实例:model进行数据的存储,View进行视图的显示和响应,controller是model和view之间的桥梁,进行逻辑控制。

        

        四.【单例模式】

        使用场景:确保程序运行时只有一个实例,用于进行资源共享控制。

        优点:逻辑简单。

        原则:单一职责。

        实例:

        (1)UIAccelerometer类和sharedAccelerometer方法,一般如果方法名中有shared这样的词,就可以认为这是一个可以整个应用程序共享的实例变量,一般是使用了单例。

        (2)UIApplication类和sharedApplication方法,我们一般使用该方法来创建全局变量。

        (3)NSBundle类和mainBundle方法。

        (4)NSFileManager类和defaultManager方法。

        (5)NSNotificationCenter类和defaultManager方法。其中NSNotificationCenter也实现了观察者模式。

        (6)NSUserDefaults类和defaultUser方法。

        

        五.【策略模式】

        使用场景:定义算法族,进行封装,使他们之间可以相互替换。

        优点:使算法的变化独立于使用算法的用户。

        原则:针对接口编程,而不是针对实现编程。

        实例:排序算法,NSArray的sortedArrayUsingSelector

        

        六.【工厂模式】

        使用场景:工厂方法创建类的实例,多于proxy模式配合,创建可替换代理类。

        优点:易于替换,面向抽象编程,application只和抽象工厂的共性抽象类发生调用关系。

        原则:依赖倒置原则。

        实例:项目部署环境中依赖多个不同类型的数据库时,需要使用工厂配合proxy完成易用性替换。

        

        总结,在实际的开发中,上述的模式用的最常见,如果以后用到其他的,我会继续和大家分享。

        

        

        


                                               

18

主题

6891

帖子

1906

金钱

手工艺人

发表于 2018-1-11 14:50:57 | 显示全部楼层
好好 学习了 确实不错

23

主题

6894

帖子

1056

金钱

iOS大神

Rank: 6Rank: 6

分享大神

发表于 2018-1-11 14:54:02 | 显示全部楼层
帮帮顶顶!!

0

主题

6869

帖子

-519

金钱

限制会员

发表于 2018-1-11 15:01:19 | 显示全部楼层
好好 学习了 确实不错

14

主题

6883

帖子

1189

金钱

手工艺人

发表于 2018-1-11 15:10:26 | 显示全部楼层
code4app好的代码demo真的很多,谢谢啦~

19

主题

6907

帖子

2005

金钱

手工艺人

发表于 2018-1-11 15:12:42 | 显示全部楼层
感谢分享,code4app有你更精彩

3

主题

6901

帖子

561

金钱

手工艺人

发表于 2018-1-11 15:14:48 | 显示全部楼层
支持,感谢,祝code4app越来越好~
*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

关闭

每日头条

通过邮件订阅最新 Code4App 信息
上一条 /4 下一条

广告投放| Github|申请友链|手机版|Code4App ( 粤ICP备15117877号-1 )

快速回复 返回顶部 返回列表