美文网首页iOS设计模式
iOS开发中的工厂模式以及应用

iOS开发中的工厂模式以及应用

作者: 梁森的简书 | 来源:发表于2018-06-11 14:19 被阅读94次

工厂模式就是根据不同的需求生产不同的产品,实质就是一个工厂类根据传入的参数动态决定应该创建哪一个产品类的实例。 

想象一个场景:

一个UITableView上cell上的内容有多种情况即一个UITableView有多种样式的cell,我们怎么去实现这个功能?

我在最初的时候会这样去实现这个功能:

1.每个cell对应一个数据(一般是字典),我需要后台在这个对应的数据上加一个字段以判断该cell是哪一种样式。

2.创建一个cell,一个与cell对应的模型。cell上会添加上所有的cell样式,模型上会包含cell对应的所有数据,然后根据模型的类型响应的显示cell上的内容。

(突然感觉这种方式也是不错的,只不过cell中的代码稍微多一些。这也属于工厂模式,根据不同的情况创建出不同样式的cell)

我们可以利用工厂模式去实现该功能。

1.我们创建一个基类cell和一个基类Model

2.我们创建多个继承自基类cell的子cell,创建多个继承自基类Model的Model

3.我们根据后台返回的数据的不同利用基类Model相应地创建多个子类Model

4.我们根据子类Model的不同利用基类cell相应地创建多个子类cell

代码:

创建不同的模型:

// 根据字典内提供的数据分别创建出对应的model来获取数据

+ (instancetype)initWithDictionary:(NSDictionary*)dictionary

{

    // 先使用当前类(父类)创建出model对象

    BaseModel*model =nil;

   // 根据字典中key对应的数据初始化不同的子类对象并将其返回给我们的父类

    if([dictionary[@"tag"]isEqualToString:@"news"]) {

        model = [[Newsalloc]init];

    }elseif([dictionary[@"tag"]isEqualToString:@"images"]){

        model = [[Imagesalloc]init];

    }elseif([dictionary[@"tag"]isEqualToString:@"music"]){

        model = [[Musicalloc]init];

    }

    [modelsetValuesForKeysWithDictionary:dictionary];  // 字典快速赋值

    returnmodel;

}

创建不同的cell:

+ (instancetype)initWithModel:(BaseModel*)model

{

    //根据我们的OC函数获取我们的model类名并将其转化为OC字符串

    NSString *modelName = [NSString stringWithUTF8String:object_getClassName(model)];

    NSLog(@"modelName:===%@", modelName);

    //使用model的类名拼接一个"Cell"来获取到我们的Cell类名

    NSString *cellName = [modelName stringByAppendingString:@"Cell"];

    //根据我们所提供的cellName来获取其对应的“cell子类”初始化一个cell对象返回给我们的父类对象

    //唯一标识符可以使用我们所提供的model来给予不同cell所对应的标识来重用。

    // 根据传过来的Model创建一个对应的具体的cell

    BaseCell *cell = [[NSClassFromString(cellName) alloc]initWithStyle:(UITableViewCellStyleDefault) reuseIdentifier:modelName];

    returncell;

}

demo地址:https://gitee.com/liangsenliangsen/factory_mode_demo.git

本篇文章到这里就结束了,愿大家加班不多工资多,男同胞都有女朋友,女同胞都有男朋友。😊

相关文章

  • iOS开发中的工厂模式以及应用

    工厂模式就是根据不同的需求生产不同的产品,实质就是一个工厂类根据传入的参数动态决定应该创建哪一个产品类的实例。 想...

  • 工厂模式——IOS版

    一、前言 工厂模式种类:简单工厂、工厂方法、抽象工厂 IOS中的应用:类簇 二、简单工厂 介绍:简单工厂模式是属于...

  • 工厂模式

    工厂模式介绍 工厂模式是创建型设计模式之一。工厂方法模式是一种结构简单的模式,在平时开发中应用很广泛。 工厂方法模...

  • 设计模式——工厂方法模式

    1.工厂方法模式介绍 工厂方法模式(Factory Pattern)属于创建型设计模式。结构简单,平时开发中应用广...

  • iOS 开发模式

    - ios开发学习中,经常弄不清楚ios的开发模式,今天我们就来进行简单的总结和探讨~ - (一)代理模式 应用场...

  • 《iOS开发》--------常用的设计模式

    关于iOS开发中的设计模式,当下有集中最常用的设计模式:代理模式、观察者模式、MVC模式、单例模式、策略模式、工厂...

  • 工厂方法模式

    一、前言 工厂方法模式是创建型设计模式之一。工厂方法模式是一种很好的模式,在我们平时开发中应用很广泛。(Ps:如果...

  • 常见的几种设计模式

    iOS开发学习中,经常弄不清楚iOS的开发模式,今天我们就来进行简单的总结和探讨~ 一 、代理模式 应用场景:当一...

  • iOS开发中的几种设计模式介绍

    iOS开发学习中,经常弄不清楚ios的开发模式,今天我们就来进行简单的总结和探讨~ (一)代理模式 应用场景:当一...

  • 工厂设计模式

    工厂家族: 静态工厂模式 简单工厂模式 工厂方法模式 抽象工厂模式 工厂模式符合软件开发中的OOP原则(open ...

网友评论

    本文标题:iOS开发中的工厂模式以及应用

    本文链接:https://www.haomeiwen.com/subject/fvfheftx.html