工厂模式

  • 在基类中定义创建对象的一个接口,让子类决定实例化哪个类。工厂方法让一个类的实例化延迟到子类中进行。
  • 工厂方法要解决的问题是对象的创建时机,它提供了一种扩展的策略,很好地符合了开放封闭原则。工厂方法也叫做虚构造器(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的时候,就可以使用工厂模式。

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

相关阅读更多精彩内容

友情链接更多精彩内容