iOS开发设计模式详解
在软件开发中一般认为有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完成易用性替换。
总结,在实际的开发中,上述的模式用的最常见,如果以后用到其他的,我会继续和大家分享。
github主页:https://github.com/chenyufeng1991 。欢迎大家访问!
iOS开发设计模式详解相关推荐
- 苹果iOS开发系列--详解Swift 3.0语言的重大变化
概述 从写第一篇Swift文章的时候到现在Swift已经从1.2发展到了今天的3.0,这期间由于Swift目前还在发展阶段并不能向下兼容,因此第一篇文章中的部分代码在当前的Xcode环境中已经无法运行 ...
- iOS开发-Runtime详解(简书)
简介 Runtime 又叫运行时,是一套底层的 C 语言 API,其为 iOS 内部的核心之一,我们平时编写的 OC 代码,底层都是基于它来实现的.比如: [receiver message]; // ...
- iOS开发之详解正则表达式
本文由Charles翻自raywenderlich 原文:NSRegularExpression Tutorial: Getting Started 更新提示:本教程被James Frost更新到了i ...
- iOS开发- UICollectionView详解+实例
本章通过先总体介绍UICollectionView及其常用方法,再结合一个实例,了解如何使用UICollectionView. UICollectionView 和 UICollectionViewC ...
- iOS开发CAAnimation详解
Core Animation,即为核心动画,它是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍.也就是说,使用少量的代码就可以实现非常强大的功能.Core Anima ...
- iOS开发之详解连连支付集成
"最近由于公司项目需要集成连连支付,文档写的不是很清楚,遇到了一些坑,因此记录一下,希望能帮到有需要的人." 前面简单的集成没有遇到什么坑,在此整理一下官方的集成文档,具体步骤如下 ...
- iOS开发——Handoff详解
iOS8推出一个新特性,叫做Handoff.Handoff中文含义为换手(把接力棒传给下一个人),可以在一台Mac和iOS设备上开始工作,中途将工作交换到另一个Mac或iOS设备中进行.这个在iOS8 ...
- iOS中MVC等设计模式详解
iOS中MVC等设计模式详解 在iOS编程,利用设计模式可以大大提高你的开发效率,虽然在编写代码之初你需要花费较大时间把各种业务逻辑封装起来.(事实证明这是值得的!) 模型-视图-控制器(MVC)设计 ...
- iOS 7 iPhone iPad应用开发技术详解
2019独角兽企业重金招聘Python工程师标准>>> iOS 7 iPhone iPad应用开发技术详解 本书内容全面,从 Objective-C语法知识.iOS功能特 性,到高级 ...
最新文章
- Python实战 | 送亲戚,送长辈,月饼可视化大屏来帮忙!
- 初学者必学的C++项目!花3天搞定
- Magic Leap 2实测出炉:视场角增大20度,重量减轻20%,透光率低至0.3%让AR特效更逼真...
- 杂谈--DML触发器学习
- window wamp中配置安装xhprof步骤(windows)
- android php mysql json 查询_使用json从PHP-MySql服务器到Android获取图像
- 【CodeForces - 735A 】Ostap and Grasshopper (水题,模拟)
- 格兰杰因果关系检验r语言_R语言系列第四期:R语言单样本双样本差异性检验
- oracle如何判断奇数偶数_堆垒素数论之旅(1):奇数哥德巴赫猜想
- zabbix 安装(yum)
- antd权限管理_Ant Design Pro开发后台管理系统(权限)-阿里云开发者社区
- Python3异常-AttributeError: module 'sys' has no attribute 'setdefaultencoding'
- 比特币工作量证明,“法外之地”的法
- python语言是 创造的_1.python简介
- HTML5+CSS期末大作业:环保网站设计——环境保护(10页) 含设计报告 HTML+CSS+JavaScript 静态HTML环境保护网页制作下载 DIV+CSS环保网页设计代码...
- 一种用于指导模拟 IC 布局的定制图神经网络模型
- 手机银行告别“鸡肋”
- 湖南科技大学c语言上机题库,2018年湖南科技大学计算机科学与工程院824C语言程序设计与数据结构综合之C程序设计考研核心题库...
- 思科交换机等设备基本配置
- 基于hadoop下的使用map reduce分布式系统的高考高频词汇统计