简单工厂(SimpleFactory)

简单工厂模式

简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。

组成结构:

工厂(Factory)角色:接受客户端的请求,通过请求负责创建相应的产品对象。
抽象产品(Abstract Product)角色:是工厂模式所创建对象的父类或是共同拥有的接口。可是抽象类或接口。
具体产品(ConcreteProduct)对象:工厂模式所创建的对象都是这个角色的实例。

优缺点

实现了客户端和具体实现类的解耦。
不方便扩展子工厂。
增加了客户端的复杂程度。

举个栗子🌰

一个简单的objective-c实现,WNCat和WNDog继承自WNAnimal,通过向WNAnimalFactory工厂传人类型来创建不同类的实例

typedef enum
{
    WNAnimalTypeCat,
    WNAnimalTypeDog
}WNAnimalType;

@interface WNAnimal : NSObject

@end
@interface WNCat : WNAnimal

@end
@interface WNDog : WNAnimal

@end
@interface WNAnimalFactory : NSObject

+ (__kindof WNAnimal *)produceAnimalWithType:(WNAnimalType)type;

@end
@implementation WNAnimalFactory

+ (__kindof WNAnimal *)produceAnimalWithType:(WNAnimalType)type
{
    __kindof WNAnimal *animal;
    switch (type) {
        case WNAnimalTypeCat:
            animal = [[WNCat alloc] init];
            break;
        case WNAnimalTypeDog:
            animal = [[WNDog alloc] init];
            break;
        default:
            break;
    }
    return animal;
}

Tips

简单工厂不属于23种GOF设计模式之一

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 设计模式概述 在学习面向对象七大设计原则时需要注意以下几点:a) 高内聚、低耦合和单一职能的“冲突”实际上,这两者...
    彦帧阅读 9,173评论 0 14
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,073评论 19 139
  • 设计模式汇总 一、基础知识 1. 设计模式概述 定义:设计模式(Design Pattern)是一套被反复使用、多...
    MinoyJet阅读 9,399评论 1 15
  • 工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。通常我们所说的工厂模式是指工厂方法模...
    zfylin阅读 5,124评论 0 7
  • 小伙伴们,有没有被开头的图片吓到啊~ 但是,接下来了解完这部漫画、动漫兼电影,你或许会开始反省自己,“或许我真的该...
    仔木阅读 6,846评论 1 3

友情链接更多精彩内容