Welcome 微信登录

首页 / 移动开发 / IOS

iOS应用运用设计模式中的Strategy策略模式的开发实例

iOS应用运用设计模式中的Strategy策略模式的开发实例

在写程序的时候,我们经常会碰到这样的场景:把一堆算法塞到同一段代码中,然后使用if-else或switch-case条件语句来决定要使用哪个算法?这些算法可能是一堆相似的类函数或方法,用以解决相关的问题。比如,一个验证输入数据的例程,数据本身可以是任何数据类型(如NSString、CGFloat等),每种数据类型需要不同的验证算法。如果能把每个算法封装成一个对象,那么就能消除根据数据类型决定使用什么算法的一堆if-else或switch-case语句。 ...
深入解析设计模式中的装饰器模式在iOS应用开发中的实现

深入解析设计模式中的装饰器模式在iOS应用开发中的实现

装饰器模式可以在不修改代码的情况下灵活的为一对象添加行为和职责。当你要修改一个被其它类包含的类的行为时,它可以代替子类化方法。一、基本实现下面我把类的结构图向大家展示如下:让我们简单分析一下上面的结构图,Component是定义一个对象接口,可以给这些对象动态地添加职责。ConcreteComponent是定义了一个具体的对象,也可以给这个对象添加一些职责。Decorator,装饰抽象类,继承了Component,从外类来扩展Component类的功能,但...
设计模式开发中的备忘录模式在iOS应用开发中的运用实例

设计模式开发中的备忘录模式在iOS应用开发中的运用实例

何为备忘录模式? 在响应某些事件时,应用程序需要保存自身的状态,比如当用户保存文档或程序退出时。例如,游戏退出之前,可能需要保存当前会话的状态,如游戏等级、敌人数量、可用武器的种类等。游戏再次打开时,玩家可以从离开的地方接着玩。很多时候,保存程序的状态真的不需要什么特别巧妙的方法。任何简单有效的方法都可以,但是同时,保存信息应该只对原始程序有意义。原始程序应该是能够解码它所保存文档中的信息的唯一实体。这就是备忘录模式应用于游戏、文字处理等程序的软件设计中的...
实例解析设计模式中的外观模式在iOS App开发中的运用

实例解析设计模式中的外观模式在iOS App开发中的运用

外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义 一个高层接口,这个接口使得这一子系统更加容易使用。下面给大家展示一下类的结构图,想必大家一看就明白了:其实这个模式中,没有类与类之间的继承关系,只是进行了简单的类引用,统一了对外的接口而已。看起来是不是很简单?废话不多说了,下面简单向大家展示一下代码吧!注意:本文所有代码均在ARC环境下编译通过。SubSystemOne类接口复制代码 代码如下:#import <Found...
详解iOS应用开发中使用设计模式中的抽象工厂模式

详解iOS应用开发中使用设计模式中的抽象工厂模式

概述 我们知道简单工厂模式的优点是去除了客户端与具体产品的依赖,缺点是违反了“开放-关闭原则”;工厂方法模式克服了简单工厂模式的缺点,将产品的创建工作放到具体的工厂类,每个工厂类负责生成一个产品。但是在实际应用中,一个工厂类只创建单个产品的情况很少,一般一个工厂类会负责创建一系列相关的产品,如果我们要设计这样的系统,工厂方法模式显然不能满足应用的需求,本章要介绍的抽象工厂模式,可以很好地解决一系列产品创建的问题。定义 “提供一个创建一系列相关或相互依赖...
解析iOS应用开发中对设计模式中的抽象工厂模式的实现

解析iOS应用开发中对设计模式中的抽象工厂模式的实现

概述抽象工厂模式是对象的创建模式,它是工厂方法模式的进一步推广。假设一个子系统需要一些产品对象,而这些产品又属于一个以上的产品等级结构。那么为了将消费这些产品对象的责任和创建这些产品对象的责任分割开来,可以引进抽象工厂模式。这样的话,消费产品的一方不需要直接参与产品的创建工作,而只需要向一个公用的工厂接口请求所需要的产品。通过使用抽象工厂模式,可以处理具有相同(或者相似)等级结构中的多个产品族中的产品对象的创建问题。如下图所示:根据产品角色的结构图,就不难...
iOS App的设计模式开发中对State状态模式的运用

iOS App的设计模式开发中对State状态模式的运用

1.概述在软件开发过程中,应用程序可能会根据不同的情况作出不同的处理。最直接的解决方案是将这些所有可能发生的情况全都考虑到。然后使用if... ellse语句来做状态判断来进行不同情况的处理。但是对复杂状态的判断就显得“力不从心了”。随着增加新的状态或者修改一个状体(if else(或switch case)语句的增多或者修改)可能会引起很大的修改,而程序的可读性,扩展性也会变得很弱。维护也会很麻烦。那么我就考虑只修改自身状态的模式。例子1:按钮来控制一个...
iOS应用开发中运用设计模式中的组合模式的实例解析

iOS应用开发中运用设计模式中的组合模式的实例解析

何为组合模式? 组合模式让我们可以把相同基类型的对象组合到树状结构中,其中父节点包含同类型的子节点。换句话说,这种树状结构形成"部分——整体"的层次结构。什么是“部分——整体”的层次结构呢?它是既包含对象的组合又包含叶节点的单个对象的一种层次结构。每个组合体包含的其他节点,可以是叶节点或者其他组合体。这种关系在这个层次结构中递归重复。因为每个组合或叶节点有相同的基类型,同样的操作可应用于它们中的每一个,而不必在客户端作类型检查。客户端对组合与叶节点进行操作...
iOS App设计模式开发中对迭代器模式的使用示例

iOS App设计模式开发中对迭代器模式的使用示例

何为迭代器模式? 迭代器提供了一种顺序访问集合对象中元素的方法,而无需暴漏结构的底层表示和细节。遍历集合中元素的职能从集合本身转移到迭代器对象。迭代器定义了一个用于访问集合元素并记录当前元素的接口。不同的迭代器可以执行不同的策略。例子说了这么多,下面给大家展示一下类关系图。上图中Client的右边是迭代器,左边是具体迭代的类型,在迭代器内部对具体需要迭代的类型进行了引用,还算不难理解吧,呵呵。其实,看起来是为了对具体类型进行解耦。好啦,下面给出具体的代码实...
设计模式中的迭代器模式在Cocoa Touch框架中的使用

设计模式中的迭代器模式在Cocoa Touch框架中的使用

基本理解迭代器模式(Iterrator):提供一个方法顺序访问一个聚合对象中的各个元素,而又不暴露该元素的内部表示。当你访问一个聚合对象,而且不管这些对象是什么都需要遍历的时候,你就应该考虑用迭代器模式。你需要对聚集有多种方式遍历时,可以考虑用迭代器模式。迭代器模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合的内部结构,又可让外部代码透明地访问集合内部的数据。迭代器定义了一个用于访问集合元素并记录当前元素的接口。不同的迭...
iOS应用设计模式开发中职责链(责任链)模式的实现解析

iOS应用设计模式开发中职责链(责任链)模式的实现解析

定义为了避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止,职责链模式又称为责任链模式,它是一种对象行为型模式。(如果你接触过异常处理,那么套用异常处理机制可以更好地理解)。职责链可以是一条直线,也可以是一个环,还可以是一个树形结构,不过最常见的职责链是直线型,即沿着一条单向的链来传递请求。链上的每一个对象都是请求处理者,职责链模式可以将请求的处理者组织成一条链,并使请求沿着链...
详解iOS应用的设计模式开发中Mediator中介者模式的使用

详解iOS应用的设计模式开发中Mediator中介者模式的使用

何为中介者模式? 面向对象的设计鼓励把行为分散到不同对象中,这种分散可能导致对象之间的相互关联。在最糟糕的情况下,所有对象都彼此了解并相互操作。 虽然把行为分散到不同对象增强了可复用性,但是增加的相互关联又减少了获得的益处。增加的关联使得对象很难或不能在不依赖其他对象的情况下工作。应用程序的整体行为可能难以进行任何重大修改,因为行为分布于许多对象。于是结果可能是创建越来越多的子类,以支持应用程序中的任何新行为。 中介者模式:用一个对象来封装一系列对象的交互...
iOS App中实现播放音效和音乐功能的简单示例

iOS App中实现播放音效和音乐功能的简单示例

播放音效iOS开发过程中可能会遇到播放音效的功能其实很简单,iOS已经提供了一个框架直接负责播放音效 AudioToolbox.framework新建项目 TestWeChatSounds给新建的项目导入AudioToolbox.framework导入成功之后如下图项目目录如下接下来我们给项目中添加几个caf格式的音效文件接下来 我们打开 项目默认生成的ViewController中添加代码导入 AudioToolbox复制代码 代码如下:#import ...
IOS图片无限轮播器的实现原理

IOS图片无限轮播器的实现原理

首先实现思路:整个collectionView中只有2个cell.中间始终显示第二个cell.滚动:向前滚动当前cell的脚标为0,向后滚动当前的cell脚标为2.利用当前cell的脚标减去1,得到+1,或者-1,来让图片的索引加1或者减1,实现图片的切换.声明一个全局变量index来保存图片的索引,用来切换显示在当前cell的图片.在滚动前先让显示的cell的脚标变为1.代码viewDidLoad中设置完成一次滚动结束后,代码再设置当前的cell为第二个...
iOS创建与使用静态库

iOS创建与使用静态库

在日常项目开发中,不论是为了两个公司项目上的业务交流还是为了减少项目的编译时间,有的时候我们会把项目中的私密内容打包成静态库,或者是把项目中变动较少一部分打包成静态库以便提高编译效率,那么下面我们就来学习一下"iOS-静态库的创建与使用":(一)iOS静态库、动态库与Framework静态库与动态库的区别(1)什么是库?库(Library)直白一点说就是一段编译好的二进制代码,加上头文件就可以供别人使用;(例如: iOS中Objective-C编译下的.h...
IOS开发中使用UIFont设置字体及批量创建控件

IOS开发中使用UIFont设置字体及批量创建控件

在IOS 中,使用[UIFont familyNames]这个方法获取72种系统字体。使用[UIFont fontWithName:@"Zapfino" size:18]这个方法为空间中的文字设置字体和字号。可以通过for循环批量定义控件并设置属性。以下程序获取系统72种字体并存储在一个数组中,有两种方法,一种是通过for循环拿到每一种字体并添加到可变数组中,另一种是直接把72种字体赋值给一个数组。注:在页面控件较少的情况下选择手动创建每个控件,在控件数量...
IOS UI学习教程之使用代码创建button

IOS UI学习教程之使用代码创建button

本文使用代码创建button分5个步骤,分别是:1、定义一个按钮,根据定义位置不同可定义为局部变量或者全局变量;2、初始化按钮,一般使用一个矩形初始化;3、设置按钮控件的其他属性,如背景图片,或者背景颜色,或者按钮显示文字等属性;4、添加响应事件并编写响应事件的函数内容;5、把创建好的控件加载到窗口。五个步骤具体操作见下图:具体的代码如下:UIButton *btn;btn = [[UIButton alloc]initWithFrame:CGRectMa...
IOS UI学习教程之区分NSBundle和NSURL(读取文件、写入文件)

IOS UI学习教程之区分NSBundle和NSURL(读取文件、写入文件)

本文实例为大家区分NSBundle和NSURL,具体实现内容如下在项目的工程中添加一个文件,本例程添加的是aa.txt,文件的内容为百度: www.baidu.com,现在要使用NSBundle和NSURL分别去获取内容,代码如下://读取文件内容//方法1:按照文件路径读取NSString *pathBundle = [[NSBundle mainBundle]pathForResource:@"aa" ofType:@"txt"];NSString *...
<< 81 82 83 84 85 86 87 88 89 90 >>