美文网首页
简单工厂(SimpleFactory)

简单工厂(SimpleFactory)

作者: 與世無爭_ | 来源:发表于2018-11-14 16:06 被阅读0次

简单工厂模式

简单工厂模式(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设计模式之一

相关文章

网友评论

      本文标题:简单工厂(SimpleFactory)

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