【iOS开发系列】用简单工厂模式理解OC反射机制
来源:互联网 发布:淘宝营销活动是什么 编辑:程序博客网 时间:2024/06/15 17:44
// 根据类图我们搭框架并进行编码:/* ----------------------------------------------------------------------- */
/** * 计算器头文件:Calculate.h */#import <Foundation/Foundation.h>#import "Operation.h"@interface Calculate : NSObject// 一个计算的类方法+ (float)calculate:(float)number1 number2:(float)number2 operators:(NSString *)operators;@end/** * 计算器方法实现:Calculate.m */#import "Calculate.h"@implementation Calculate+ (float)calculate:(float)number1 number2:(float)number2 operators:(NSString *)operators{ // 使用OC反射获得一个与字符串同名的类(将在本文后面进行详细讲解) Class class = NSClassFromString(operators); // 实例化这个类,并传入计算器的两个操作数 Operation *operation = [[class alloc] initWithNumebr1:number1 number2:number2]; // 调用运算方法,并返回结果 return [operation operate];}@end/* ----------------------------------------------------------------------- *//** * 抽象运算类Operation.h */#import <Foundation/Foundation.h>@interface Operation : NSObject@property (nonatomic) float number1;@property (nonatomic) float number2;- (float)operate; // 运算方法:所有具体运算类都将重写该方法,用于实现子类自己的逻辑- (Operation *)initWithNumebr1:(float)number1 number2:(float)number2;@end/* 抽象运算类方法实现Operation.m (实现initWithNumebr1:number2:方法即可) *//* ----------------------------------------------------------------------- *//** * 加法运算类Addition.h */#import "Operation.h"/* 继承抽象运算类Operation */@interface Addition : Operation@end/* 加法运算类方法实现Addition.m (重写Operation类中的operate方法,实现加法逻辑即可) *//* ----------------------------------------------------------------------- *//** * 客户端main */#import <Foundation/Foundation.h>#import "Calculate.h"int main(int argc, const char * argv[]) { @autoreleasepool { // 将操作数1,操作数2,和操作符输入到计算器中 // 操作符即加法类类名 NSLog(@"%.2f", [Calculate calculate:1 number2:2 operators:@"Addition"]); } return 0;}/* ----------------------------------------------------------------------- */
// 通过以上代码,我们就成功实现了一个简单工厂模式的计算器。下面将讲解下OC的反射机制:// 【对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用// 它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语// 言的反射机制。】// ——百度百科 java反射// 上面这句话是对java反射的介绍,我们也可以把它看做是OC反射的介绍。// 例如上面的计算器程序,我们使用的是NSClassFromString方法来使用字符串获得类。对于// 如何使用反射,获得类中的方法、调用对象的方法、获取对象属于某个类等操作,在我的上一// 篇文章中:【iOS开发系列】NSObject方法介绍:// 反射的好处还在于团队合作时,如果对方负责的类并没有完全实现,如果这时你引入肯定会报// 错,那么就可以用到反射。
1 0
- 【iOS开发系列】用简单工厂模式理解OC反射机制
- headFirst学习13.简单工厂模式与OC反射机制
- 简单工厂模式+反射机制
- java反射机制及简单工厂模式
- 简单工厂设计模式-反射机制
- 简单工厂模式+反射
- 简单的用反射实现工厂模式
- 学习反射机制 - 工厂模式
- 【iOS开发】类簇--抽象工厂模式在OC中的使用
- OC学习_12_KVO_反射_简单工厂
- 工厂模式简单理解
- 策略模式+简单工厂+反射
- 简单工厂模式与反射
- 反射实现简单工厂模式
- Java反射机制(五):使用反射增强简单工厂设计模式
- OC 反射机制的理解(1)
- ios 简单工厂模式
- iOS简单工厂模式
- HDU1789Doing Homework again
- ZOJ 1204
- [leetcode]First Missing Positive
- Tomcat的性能与最大并发(1000)
- 几种jar转exe方法的比较
- 【iOS开发系列】用简单工厂模式理解OC反射机制
- https解析
- 工作线程中UpdateData
- 头文件互相包含与error C2146: 语法错误 : 缺少“;”的问题
- AFNetworking如何post一个json数据到服务器
- 一些文章
- 杭电 2502 月之数
- zoj 2193 Window Pains
- sort