DonyFang / DesignPatterns

DesignPatterns in iOS

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

DesignPatterns

DesignPatterns in iOS

DesignPatterns 是一个设计模式的集合,里面涵盖了很多常用的设计模式,这里面只是一些简单的例子,希望能对您有一些启发。

一:装饰者模式
装饰模式指的是动态的给一个对象添加一些额外的职责,相对于继承子类来说,装饰模式更加灵活 装饰器模式在不修改原来代码的情况下动态的给对象增加新的行为和职责,它通过一个对象包装被装饰对象的方法来修改类的行为,这种方法可以做为子类化的 一种替代方法。

二:代理设计模式 代理是一种通用的设计模式,在iOS中对代理设计模式支持的很好,有特定的语法来实现代理模式,OC语言可以通过@Protocol实现协议。 代理主要由三部分组成: 协议:用来指定代理双方可以做什么,必须做什么。 代理:根据指定的协议,完成委托方需要实现的功能。 委托:根据指定的协议,指定代理去完成什么功能。

三:适配器模式 适配器设计模式是一种结构型设计模式, 它的作用是把一个类的接口转换成客户希望的另外一个接口,从而使得原本由于接口不兼容而不能一起工作的那些类可以 一起工作。

适配器设计模式有两种实现方式: 1.)通过继承来实现两个接口,叫类适配器; 2.)通过引用来避免对象适配器继承被适配对象,叫对象适配器。   (二 )适配器设计模式 简介       将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。     适用场景:     1、已经存在的类的接口不符合我们的需求;     2、创建一个可以复用的类,使得该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作;       3、在不对每一个都进行子类化以匹配它们的接口的情况下,使用一些已经存在的子类。

四:策略设计模式 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。 应用场景: 1、 一个类在执行中使用多个if-else来决定行为。 2、需要算法的各种变体。 3、 对客户隐藏具体策略(算法)的实现细节,彼此完全独立。

五:target_action设计模式

其实Target-action模式很简单,就是当某个事件发生时,调用那个对象中的那个方法。如:按下按钮时,调用Controller里边的click方法。“那个对象”就是   Target,“那个方法”就是Action,及Controller是Targer,click方法是action。

六: 工厂方法   工厂方法模式:定义创建对象的接口,让子类决定实例化哪一个类。工厂方法使得一个类的实例化延迟到其子类。   工厂方法的使用场景   编译时无法准确预期要创建的对象的类;   类想让子类决定在运行时创建什么;   类有若干辅助类为其子类,而你想将返回哪个子类这一信息局部话;   工厂方法在CocoaTouch中的应用

在Objective-C中两步对象创建法[[SomeClass alloc] init].但是还有一些便利的创建方法。例如,NSNumber有很多numberWith*方法;其中有两个是numberWithBool:和numberWithChar:。它们是类方法,也就是说我们向NSNumber发送[[NSNumber numberWithBool:bool]]与[[NSNumber numberWithChar:char]],以获得与传入参数同类型的各种NSNumber实例。与如何创建NSNumber的具体子类型的实例有关的细节,都有NSNumber的类工厂方法负责。[[NSNumber numberWithBool:bool]]的情况是,方法接受值bool,并把NSNumber的内部子类的一个实例初始化,让它能够反应传入的值。

七: 生成器设计模式 有时候,构建某些对象有多种不同方式。如果这些逻辑包含在构建这些对象的类中的单一方法中,构建的逻辑会非常荒唐(例如,针对各种构建需求的一大片嵌套if-else或者switch-case语句)。如果能把构建过程分解为:客户-指导者-生成器(client-director-builder)的关系,那么过程将更容易管理与复用。针对此类关系的设计模式称为生成器。

About

DesignPatterns in iOS


Languages

Language:Objective-C 100.0%