美文网首页
简单工厂(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