iOS开发入门:iOS常用设计模式–委托模式

对于iOS开发,举例Cocoa框架下的几个设计模式为大家分析。当然,Cocoa框架下关于设计模式的内容远远不止这些,我们选择了常用的几种:单例模式、委托模式、观察者模式、MVC模式。

委托模式

委托模式从GoF 设计装饰(Decorator)、适配器(Adapter)和模板方法(Template Method)等模式演变而来。几乎每一个应用都会或多或少地使用到委托模式。不只是CocoaTouch框架,在Cocoa框架中委托模式也得到了广泛的应用。

问题提出

对于应用生命周期的非运行状态——应用启动场景,我们把从点击图标到第一个画面启动的过程细化了一下

假设上图这一系列的处理,都是在一个上帝类UIApplication完成的。之所以叫“上帝类(God  Class)”,是因为它“无所不能”、“包含所有”。 在面向对象的软件设计中“上帝类”不是很友好,  需要重构。在编程过程中要尽量避免上帝类的使用,因为上帝类是高耦合的,职责不清,所以难以维护。我们需要“去除上帝类”,把看似功能很强且很难维护的 类,按照职责把自己的属性或方法分派到各自的类中或分解成功能明确的类,从而去掉“上帝类”。

幸运的是苹果没有把UIApplication类设计成“上帝类”,苹果处理分割到两个不同的角色类中,其中一个扮演框架类角色,框架类具有通用、 可重复使用、与具体应用无关等特点。另一个扮演应用相关类的角色,应用相关类与具体应用有关,由于要受到框架类的控制,常常被设计成为“协议”,在 Java中称之为“接口”。开发人员需要在具体的应用中实现这个“协议”。

将application:didFinishLaunchingWithOptions:和 applicationDidBecomeActive:完成功能提取出来,定义在UIApplicationDelegate协议中,这样 UIApplication类就变成了框架类。

时间: 2024-10-27 23:08:13

iOS开发入门:iOS常用设计模式–委托模式的相关文章

iOS开发入门:iOS常用设计模式–委托模式案例实现

我们以UITextFieldDelegate为例来说明一下委托的使用. UITextFieldDelegate是控件UITextField的  委托,控件的委托主要负责响应控件事件或控制其他对象.除了UITextField,WebView.UITableView等控件也有相应的委托对象. 打开UITextFieldDelegate的API文档,其中有4个有关编辑的方法,还要3个其它方法. 开发入门:iOS常用设计模式–委托模式案例实现-"> 这里我们在编辑过程中消息的发送,UITextFi

iOS开发那些事-iOS常用设计模式–委托模式

对于iOS开发,举例Cocoa框架下的几个设计模式为大家分析.当然,Cocoa框架下关于设计模式的内容远远不止这些,我们选择了常用的几种:单例模式.委托模式.观察者模式.MVC模式. 委托模式 委托模式从GoF 设计装饰(Decorator).适配器(Adapter)和模板方法(Template Method)等模式演变而来.几乎每一个应用都会或多或少地使用到委托模式.不只是CocoaTouch框架,在Cocoa框架中委托模式也得到了广泛的应用. 问题提出 对于应用生命周期的非运行状态--应用启

iOS开发那些事-iOS常用设计模式–委托模式案例实现

书接上回,应用案例 我们以UITextFieldDelegate为例来说明一下委托的使用.UITextFieldDelegate是控件UITextField的 委托,控件的委托主要负责响应控件事件或控制其他对象.除了UITextField,WebView.UITableView等控件也有相应的委托对象. 打开UITextFieldDelegate的API文档,其中有4个有关编辑的方法,还要3个其它方法. 这里我们在编辑过程中消息的发送,UITextField编辑过程中与UITextFieldDe

《iOS 9 开发指南》——第1章,第1.1节IOS开发入门

第1章 IOS开发入门 iOS 9 开发指南 iOS是一个强大的系统,被广泛地应用于苹果公司的系列产品iPhone.iPad和iTouch设备中.iOS通过这些移动设备展示了一个多点触摸界面及众多内置传感器的界面.本章将带领大家认识iOS系统,为读者步入本书后面知识的学习打下基础. 1.1 iOS系统介绍 iOS 9 开发指南 图片 1 知识点讲解:光盘:视频\知识点\第1章\ iOS系统介绍.mp4 iOS是由苹果公司开发的手持设备操作系统.苹果公司最早于2007年1月9日的Mac World

iOS开发入门:响应内存警告

好的应用应该在系统内存警告情况下释放一些可以重新创建的资源.在iOS中我们可以在应用程序委托对象.视图控制器以及其它类中获得系统内存警告消息. 1.应用程序委托对象 在应用程序委托对象中接收内存警告消息,需要重写applicationDidReceiveMemoryWarning:方法.AppDelegate的代码片段: - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application { NSLog(@"AppDel

ios 开发海康威视ios sdk

问题描述 ios 开发海康威视ios sdk 2C 请问哪里有海康威视ios sdk,或者说我有端口和IP,怎么连接远程摄像头?先谢谢了! 解决方案 我这可以提供,但不是免费的,QQ1561724180

ios开发-请问ios能否实现监听锁屏和解锁事件,需要调用什么方法

问题描述 请问ios能否实现监听锁屏和解锁事件,需要调用什么方法 刚开始接触ios开发对ios开发不太熟悉,目前APP开发需要一个能够后台运行的监听计时模块,需要当模块在后台运行时,以屏幕是否解锁为依据进行计时.想知道ios如何实现对锁屏和解锁等事件的监听?需要调用什么方法?如果不能实现的话对上述功能需求应该要如何实现?目前没能找到较为明确的答案,恳请高人解答 解决方案 请问LZ解决了吗? 分享一下经验呢 解决方案二: 这个事件涉及隐私,而且作用不大,我觉得无法获取

IOS开发笔记 IOS如何访问通讯录

    IOS开发笔记  IOS如何访问通讯录 其实我是反对这类的需求,你说你读我的隐私,我肯定不愿意的. 幸好ios6.0 以后给了个权限控制.当打开app的时候你可以选择拒绝. 实现方法: [plain] view plaincopy //读取所有联系人      -(void)ReadAllPeoples      {              //取得本地通信录名柄              ABAddressBookRef tmpAddressBook = nil;         

iOS开发入门:平铺导航-基于Page的导航及案例实现

基于分页导航实现 在iOS 5之后,可以使用分页控制器(UIPageViewController)构建类似于电子书效果的应用,我们称为基于分页的应用.一个分页应用有很多相关的视图控制器 开发入门:平铺导航-基于Page的导航及案例实现-"> 分页控制器(PageViewController)需要放置在一个父视图控制器中,在分页控制器下面还要有子视图控制器,每个子视图控制器对应图中的一个页面. 在基于分页导航实现的应用中需要的类和协议:UIPageViewControllerDataSour