当前位置: 首页 > news >正文

福州网站设计企业建站wordpress 主题函数

福州网站设计企业建站,wordpress 主题函数,龙岗区黄阁坑社区,外包公司被辞退有补偿吗一、什么是工厂方法#xff1f; 正式的解释是#xff1a;在基类中定义创建对象的一个接口#xff0c;让子类决定实例化哪个类。工厂方法让一个类的实例化延迟到子类中进行。工厂方法要解决的问题是对象的创建时机#xff0c;它提供了一种扩展的策略#xff0c;很好地符合了… 一、什么是工厂方法 正式的解释是在基类中定义创建对象的一个接口让子类决定实例化哪个类。工厂方法让一个类的实例化延迟到子类中进行。工厂方法要解决的问题是对象的创建时机它提供了一种扩展的策略很好地符合了开放封闭原则。工厂方法也叫做虚构造器Virtual Constructor。 个人的拙见是通过工厂方法创建工厂对象然后在工厂类中定义创建基类的子类对象的方法并通过外部传入的条件判断去创建哪一个子类对象不过由于OC是运行时语言所以工厂类虽然提供了创建子类对象的方法但是在编译时期并不能确定对象类型编译时期创建的子类对象类型是基类类型真正的类型在运行时期由子类来确定也即此时确定为子类类型。   二、工厂方法的实现条件 1存在继承关系 2运用了多态的特性   三、工厂方法的优缺点 优点极大地优化了代码如果需要100个子类对象不用再一直调用alloc方法去创建而是直接通过其工厂类的一句代码即可实现提高了对代码的复用性。同时也可以将大量的操作放到工厂类中去处理业务类中只负责去调用创建需要的对象即可。 缺点因为它的实现条件之一必须存在继承关系所以模式中工厂类集中了所有的创建逻辑形成一个庞大的全能类当所有的类不是继承自同一个父类的时候扩展比较困难。   四、创建一个简单的工厂方法如下 工厂类PersonFactory // PersonFactory.h // // Created by 夏远全 on 16/12/23. // Copyright © 2016年 广州市东德网络科技有限公司. All rights reserved. //#import Foundation/Foundation.hextern NSString *TeacherClassName; extern NSString *StudentClassName;class Person; interface PersonFactory : NSObject/*** 定义的一个创建子类对象的接口通过传入的类名称创建对应的子类对象** param className 类名称* param callBlcok 回调返回创建的子类对象此时接收子类对象的类型Person类型*/ -(void)createObject:(NSString *)className compelete:(void (^)(Person *object))callBlcok;end // PersonFactory // // Created by 夏远全 on 16/12/23. // Copyright © 2016年 广州市东德网络科技有限公司. All rights reserved. //#import PersonFactory.h #import Person.h #import Teacher.h #import Student.hNSString *TeacherClassName Teacher; NSString *StudentClassName Student;implementation PersonFactory-(void)createObject:(NSString *)className compelete:(void (^)(Person *object))callBlcok{if ([className isEqualToString:NSStringFromClass([Teacher class])]) {//创建教师类对象Teacher *teacher [[Teacher alloc] init];//回调callBlcok(teacher);//教书[teacher teachStudent];}if ([className isEqualToString:NSStringFromClass([Student class])]) {//创建学生类的对象Student *student [[Student alloc] init];//回调callBlcok(student);//学习[student learnKnowledge];} }end 基类Person(里面提供的方法都被子类重写) // Person.h // // Created by 夏远全 on 16/12/23. // Copyright © 2016年 广州市东德网络科技有限公司. All rights reserved. //#import Foundation/Foundation.hinterface Person : NSObject/*** 打印类名*/ -(void)printClassName;end // // Person.m // // Created by 夏远全 on 16/12/23. // Copyright © 2016年 广州市东德网络科技有限公司. All rights reserved. //#import Person.himplementation Person-(void)printClassName{}end 子类教师类Teacher(重写基类方法的同时也可以定义属于自己的新的方法) // Teacher.h // // Created by 夏远全 on 16/12/23. // Copyright © 2016年 广州市东德网络科技有限公司. All rights reserved. //#import Person.hinterface Teacher : Person/*** 教师的行为*/ -(void)teachStudent; end // Teacher.m // // Created by 夏远全 on 16/12/23. // Copyright © 2016年 广州市东德网络科技有限公司. All rights reserved. //#import Teacher.himplementation Teacher-(void)printClassName{NSLog(%---%,NSStringFromClass([self class]),self); }-(void)teachStudent{NSLog(teach student); }end 子类学生类Student(重写基类方法的同时也可以定义属于自己的新的方法) // Student.h // // Created by 夏远全 on 16/12/23. // Copyright © 2016年 广州市东德网络科技有限公司. All rights reserved. //#import Person.hinterface Student : Person/*** 学生的行为*/ -(void)learnKnowledge;end // Student.m // // Created by 夏远全 on 16/12/23. // Copyright © 2016年 广州市东德网络科技有限公司. All rights reserved. //#import Student.himplementation Student-(void)printClassName{NSLog(%---%,NSStringFromClass([self class]),self); }-(void)learnKnowledge{NSLog(learnKnowledge); }end main.m演示如下 // main.m // PersonFactory // // Created by 夏远全 on 16/12/23. // Copyright © 2016年 广州市东德网络科技有限公司. All rights reserved. //#import Foundation/Foundation.h #import PersonFactory.h #import Person.h #import Teacher.h #import Student.hint main(int argc, const char * argv[]) {autoreleasepool {//创建工厂对象PersonFactory *personFactory [[PersonFactory alloc] init];//连续创建Person的子类教师类对象for (int i0; i5; i) {[personFactory createObject:TeacherClassName compelete:^(Person *object) {[object printClassName];}];}//连续创建Person的子类学生类对象for (int i0; i5; i) {[personFactory createObject:StudentClassName compelete:^(Person *object) {[object printClassName];}];}}return 0; } 打印结果 2016-12-23 21:58:51.235 PersonFactory[8896:442793] Teacher---Teacher: 0x100f01660 2016-12-23 21:58:51.237 PersonFactory[8896:442793] teach student 2016-12-23 21:58:51.237 PersonFactory[8896:442793] Teacher---Teacher: 0x103800100 2016-12-23 21:58:51.237 PersonFactory[8896:442793] teach student 2016-12-23 21:58:51.237 PersonFactory[8896:442793] Teacher---Teacher: 0x100c005c0 2016-12-23 21:58:51.237 PersonFactory[8896:442793] teach student 2016-12-23 21:58:51.237 PersonFactory[8896:442793] Teacher---Teacher: 0x100c00550 2016-12-23 21:58:51.237 PersonFactory[8896:442793] teach student 2016-12-23 21:58:51.237 PersonFactory[8896:442793] Teacher---Teacher: 0x100c00180 2016-12-23 21:58:51.237 PersonFactory[8896:442793] teach student 2016-12-23 21:58:51.237 PersonFactory[8896:442793] Student---Student: 0x100a00020 2016-12-23 21:58:51.237 PersonFactory[8896:442793] learnKnowledge 2016-12-23 21:58:51.237 PersonFactory[8896:442793] Student---Student: 0x100a02880 2016-12-23 21:58:51.237 PersonFactory[8896:442793] learnKnowledge 2016-12-23 21:58:51.237 PersonFactory[8896:442793] Student---Student: 0x103900000 2016-12-23 21:58:51.237 PersonFactory[8896:442793] learnKnowledge 2016-12-23 21:58:51.237 PersonFactory[8896:442793] Student---Student: 0x103800220 2016-12-23 21:58:51.238 PersonFactory[8896:442793] learnKnowledge 2016-12-23 21:58:51.238 PersonFactory[8896:442793] Student---Student: 0x103800230 2016-12-23 21:58:51.238 PersonFactory[8896:442793] learnKnowledge Program ended with exit code: 0 本人原创此处是自己对知识的回炉如果理解有误请大家不吝赐教对我进行斧正。   程序猿神奇的手每时每刻这双手都在改变着世界的交互方式 本文转自当天真遇到现实博客园博客原文链接http://www.cnblogs.com/XYQ-208910/p/6216246.html如需转载请自行联系原作者
http://www.pierceye.com/news/127276/

相关文章:

  • 建企业网站教程wordpress网站被黑
  • 饮料网站建设市场分析什么是seo网站优化
  • 滑动网站国家级示范建设网站
  • 做一门户网站价格个人网站制作模板图片
  • 做网站需要审核资质吗wordpress 防恶意注册
  • 怎么不花钱建网站无人售货机
  • 可以做空股票的网站thinkphp网站开发
  • 给别人做网站怎么赚钱吗专业网络推广软件
  • SOHO英文网站制作晋江网站制作
  • 启东住房和城乡建设局网站邢台网站制作报价多少钱
  • 佛山网站建设seo优化做英文的小说网站有哪些
  • 安顺建设局网站官网哪里有响应式网站企业
  • 唯品会一家做特卖的网站国家商标查询官方网站
  • 网站宝搭建网站环境做电商网站一般需要什么流程图
  • 南通网站建设团队wordpress广告产检
  • 做网站刷赞qq怎么赚钱邢台路桥建设总公司没有网站吗
  • 网站仿站教程常用外贸网站
  • 南昌市有帮做网站的吗纵横天下网站开发
  • pc网站直接转换成移动端的网站黑果云免费虚拟主机
  • 网站建设用什么科目wordpress当前分类链接地址
  • 做一万个网站网站做下载功能
  • 佛山建站模板制作wordpress加上live2d
  • 樟木头网站仿做深圳网站开发公司
  • 孙俪做的网站广告微信如何修改wordpress
  • 有什么手机做网站的免费ppt模板下载花
  • 网站建设团队技术介绍县级网站
  • 深圳营销型网站建设价格网站建设文化如何
  • 提交网站的入口地址网站建设灬金手指下拉十五
  • 连云港建设局网站学校网站建设管理相关规定
  • 什么网站做玩具的外贸网站监控系统