IOS开发入门iOS设计模式—工厂模式
白羽 2019-04-16 来源 :网络 阅读 701 评论 0

摘要:本文将带你了解IOS开发入门iOS设计模式—工厂模式,希望本文对大家学物联网有所帮助。

    本文将带你了解IOS开发入门iOS设计模式—工厂模式,希望本文对大家学物联网有所帮助。


IOS开发入门iOS设计模式—工厂模式


工厂模式也称为虚构造器
   使用情况:
   (1)一个了无法预期知道他要生成那个类的对象,就让其子类决定生成那个类的对象
   (2)创建大量相同类的对象
   实现方法:在基类中定义创建对象的一个接口,让子类决定实例化哪个类。工厂方法让一个类的实例化延迟到子类中进行。
   比如创建对象的时候,我们一般是alloc一个对象,如果需要创建100个这样的对象,如果是在一个for循环中还好说,直接一句alloc就行了,但是事实并不那么如意,我们可能会在不同的地方去创建这个对象,那么我们可能需要写100句alloc  了,但是如果我们在创建对象的时候,需要在这些对象创建完之后,为它的一个属性添加一个固定的值,比方说都是某某学校的学生,那么可能有需要多些100行重复的代码了,那么,如果写一个-(void)createObj方法,把创建对象和学校属性写在这个方法里边,那么就是会省事很多,也就是说我们可以alloc  创建对象封装到一个方法里边,直接调用这个方法就可以了,这就是简单工厂方法
   代码结构如下
   Animal 类
   @interface Animal :NSObject
   @proterty(nonatomic,strong) NSString *name;
   -(void)laugh;
   @end
   Dog类
    
   @interface Dog:Animal
   @end
    
   Cat类
   @interfaceCat:Animal
   @end
    
   创建对象的工厂类
   .h
   @interfaceAnimalFactory:NSObject
   +(Dog *)createDog;
   +(Cat *)createCat;
   @end
   .m
   @implementation AnimalFactory
   +(Dog*)createDog{
   Dog *dog=[[Dog alloc]init];
   dog.name=@“baby”;
   return dog;
   }
    
   +(Cat*)createCat{
   Cat*cat=[[Catalloc]init];
   return cat;
   }
   Main.m文件
   Dog *dog=[AnimalFactory createDog];
   Cat *cat=[AnimalFactory createCat];
   这是简单工厂模式
   现在创建100个Dog对象,如果这100个对象写在程序中的不同地方,按上边的方法是需要把Dog *dog=[AnimalFactory  createDog];这一句话写在程序中很多不同的地方,那么现在有一个需求,就是如果需要把这些创建的100个Dog对象全部变成Cat对象,那么按照刚才的那个做法,就需要在这100句代码中把createDog方法变成createCat方法了,这样做还是很复杂
   那么这个时候用工厂方法模式就能解决这个难题了
   工厂方法模式是为每一个要创建的对象所在的类都相应地创建一个工厂
   代码如下
   @interfaceAnimalFactory:NSObject
   -(Animal*)createAnimal;
   @end;
   Dog工厂类
   @interface DogFactory:AnimalFactory;
   @implementation DogFactory
   -(Animal *)createAnimal{
   retrurn [[Dog alloc]init];
   }
   @end
   Cat工厂类
   @interfaceCatFactory:AnimalFactory;
   @implementationCatFactory
   -(Animal *)createAnimal
   retrurn [[Catalloc]init];
   }
   @end
   Main.m
   AnimalFactory *dogFactory=[[DogFactory alloc]init];
    
   Animal *animal1=[dogFactory createAnimal];
   [animal1 laugh];
   Animal *animal2=[dogFactory createAnimal];
   [animal2 laugh];
   …….
   Animal *animal100=[dogFactory createAnimal];
   [animal100 laugh];
   这样话如果要把100个Dog改为Cat的话,只需要吧DogFactory改为CatFactory就可以了
    
   但是工厂方法也有它的限制:
   1.要创建的类必须拥有同一个父类
   2.要创建的类在100个不同的地方所调用的方法必须一样


以上就介绍了物联网的相关知识,希望对物联网有兴趣的朋友有所帮助。了解更多内容,请关注职坐标人工智能之物联网频道!

本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程