iOS设计模式——简单工厂模式的使用

作者: CoderGuogt | 来源:发表于2016-11-14 21:55 被阅读554次

简单工厂模式(Factory Pattern)是 开发中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
在简单工厂模式中,我们在创建对象时不会暴露创建逻辑,并且是通过使用一个共同的方法来指向新创建的对象,定义一个创建对象的方法,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。

1.创建一个Person类,并在Person类的.h文件中,声明两个方法

/**
 *  创建一个人物
 *
 *  @param type 人物的类型
 */
+ (Person *)personWithType:(PersonType)type;

/**
 *  做一些事情
 */
- (void)doSomeThing;

PersonType是一个枚举,代表着Person的类别

typedef NS_ENUM(NSUInteger, PersonType) {
    PersonTypeMajor = 1,  /**< 成年人 */
    PersonTypeYoungster,  /**< 青少年 */
    PersonTypeKid  /**< 小孩 */
};

然后在.m文件中实现在.h文件的两个方法

+ (Person *)personWithType:(PersonType)type {
    switch (type) {
        case PersonTypeMajor:
            return [[Major alloc] init];
            break;
        case PersonTypeYoungster:
            return [[Youngster alloc] init];
            break;
        case PersonTypeKid:
            return [[Kid alloc] init];
            break;
    }
}

- (void)doSomeThing {
    
}

根据传入的type类型,创建相对应的子类型
2.接下来创建三个Person的子类 Major 、Youngster、Kid,并且在这三个子类的实现文件中,重写父类doSomething的方法(因为继承的关系,三个子类都有同样的方法)

#import "Major.h"

@implementation Major

- (void)doSomeThing {
    
    NSLog(@"成年人");
}

@end
#import "Youngster.h"

@implementation Youngster

- (void)doSomeThing {
    
    NSLog(@"青少年");
}

@end
#import "Kid.h"

@implementation Kid

- (void)doSomeThing {
    
    NSLog(@"小孩");
}

@end

3.创建Person类根据不同的类型去创建实例对象

Person *major = [Person personWithType:PersonTypeMajor];
[major doSomeThing];
        
Person *youngster = [Person personWithType:PersonTypeYoungster];
[youngster doSomeThing];
        
Person *kid = [Person personWithType:PersonTypeKid];
[kid doSomeThing];

得到的结果

Paste_Image.png

这样,通过一个工厂模式的工厂方法去创建了一个类族,只需要利用Person根据类型去创建一个实例对象,然后执行相应的操作,不同的类型得到不一样的结果。(有不对的地方,欢迎指出)

相关文章

  • iOS设计模式(3)适配器模式

    设计模式系列文章 《iOS设计模式(1)简单工厂模式》《iOS设计模式(2)工厂模式》《iOS设计模式(4)抽象工...

  • iOS设计模式(5)策略模式

    设计模式系列文章 《iOS设计模式(1)简单工厂模式》《iOS设计模式(2)工厂模式》《iOS设计模式(3)适配器...

  • iOS设计模式(6)模板模式

    设计模式系列文章 《iOS设计模式(1)简单工厂模式》《iOS设计模式(2)工厂模式》《iOS设计模式(3)适配器...

  • iOS设计模式(7)建造者模式

    设计模式系列文章 《iOS设计模式(1)简单工厂模式》《iOS设计模式(2)工厂模式》《iOS设计模式(3)适配器...

  • iOS设计模式(4)抽象工厂模式

    设计模式系列文章 《iOS设计模式(1)简单工厂模式》《iOS设计模式(2)工厂模式》《iOS设计模式(3)适配器...

  • iOS设计模式(8)外观模式

    设计模式系列文章 《iOS设计模式(1)简单工厂模式》《iOS设计模式(2)工厂模式》《iOS设计模式(3)适配器...

  • iOS设计模式(三)之抽象工厂模式

    设计模式系列传送门 iOS设计模式(一)之简单工厂模式iOS设计模式(二)之工厂模式iOS设计模式(三)之抽象工厂...

  • iOS设计模式(一)之简单工厂模式

    设计模式系列传送门 iOS设计模式(一)之简单工厂模式iOS设计模式(二)之工厂模式iOS设计模式(三)之抽象工厂...

  • iOS设计模式(二)之工厂模式

    设计模式系列传送门 iOS设计模式(一)之简单工厂模式iOS设计模式(二)之工厂模式iOS设计模式(三)之抽象工厂...

  • 2016.06笔记

    iOS设计模式之工厂模式(简单工厂,工厂方法,抽象工厂) 简单工厂:简单工厂模式的工厂类一般是使用静态方法,通过接...

网友评论

  • 1剑天下:这是简单工厂模式,不是什么工厂方法模式
  • Mr卿:工厂模式没这么简单吧
    Mr卿:@藍眼淚 嗯,好的
    CoderGuogt:@薇薇卿 这只是工厂模式的一种工厂方法,还有两个方法

本文标题:iOS设计模式——简单工厂模式的使用

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