工厂模式

作者: 我爱吃豆芽 | 来源:发表于2016-07-01 22:16 被阅读82次
    • 在基类中定义创建对象的一个接口,让子类决定实例化哪个类。工厂方法让一个类的实例化延迟到子类中进行。
    • 工厂方法要解决的问题是对象的创建时机,它提供了一种扩展的策略,很好地符合了开放封闭原则。工厂方法也叫做虚构造器(Virtual Constructor)

    什么时候使用工厂方法?

    在这种情况:一个父类无法预期生成那个子类的对象,想让其子类来指定生成的对象的时候。

    eg:

    建一个继承于NSObject的“工厂”
    #FactoryAnimal.h
    
    
    + (Animal *)creatAnimalWithType:(NSString *)type;
    
    #FactoryAnimal.m
    + (Animal *)creatAnimalWithType:(NSString *)type{
        
        Animal *animal = [[NSClassFromString(type) alloc]init];
    //[NSClassFromString根据字符串生成类。Animal *animal=,父类指针指向子类对象,OC的多态。
        [animal laungh];
        
        return animal;
    }
    
    
    新建一个叫Animal的,继承于NSObject的类
    它有一个方法:笑😄
    - (void)laungh;
    但是在.m中并不写实现
    - (void)laungh{
    }
    
    
    
    新建继承于Animal的类,cat、dog
    由于OC继承特性
    在cat、dog类.m中实现 (void)laungh;
    
    cat
    - (void)laungh{
        
        NSLog(@"喵喵");
    }
    
    
    dog
    - (void)laungh{
        
        NSLog(@"汪汪");
    }
    

    接下来这样调用

    [FactoryAnimal creatAnimalWithType:@"dog"];
    [FactoryAnimal creatAnimalWithType:@"cat"];
    

    打印结果

    屏幕快照 2016-07-01 下午10.08.10.png

    可以看到,给那个类名,就调用那个方法。有时候需根据不同的Model产出不同的cell的时候,就可以使用工厂模式。

    相关文章

      网友评论

        本文标题:工厂模式

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