第一章:代码无错就是优-简单的工厂模式
先建立一个计算类Operation
Operation.h文件
@interface Operation : NSObject @property(nonatomic,assign)double numberA; @property(nonatomic,assign)double numberB; @end
Operation.m文件
@implementation Operation @end
然后分别创建他们的子类Add,Sub,Mul,Div
Add.h
#import "Operation.h" @interface Add : Operation -(double)OperationAdd; @end
Add.m
#import "Add.h" @implementation Add -(double)OperationAdd{ return self.numberA+self.numberB; }
@end
Sub.h
#import "Operation.h" @interface Sub : Operation -(double)operaSub; @end
Sub.m
#import "Sub.h" @implementation Sub - (double)operaSub{ return self.numberA-self.numberB; } @end
Mul.h
#import "Operation.h" @interface Mul : Operation -(double)OperaMul; @end
Mul.m
#import "Mul.h" @implementation Mul -(double)OperaMul{ return self.numberA*self.numberB; } @end
Div.h
#import "Operation.h" @interface Div : Operation -(double)OperaDiv; @end
Div.m
#import "Div.h" @implementation Div -(double)OperaDiv{ // double result=0.0; if (self.numberB==0) { NSLog(@"除数不能为0"); } return self.numberA/self.numberB; } @end
计算的工厂类OperationFactory.h
#import <Foundation/Foundation.h>
#import "Add.h"
#import "Sub.h"
#import "Mul.h"
#import "Div.h"
@interface OperationFactory : NSObject
-(Operation *)createOperate:(char)opreate;
@end
OperationFactory.m
#import "OperationFactory.h" @implementation OperationFactory -(Operation *)createOperate:(char)opreate{ Operation *oper; switch (opreate) { case '+': oper=[[Add alloc]init]; break; case '-': oper=[[Sub alloc]init]; break; case '*': oper=[[Mul alloc]init]; break; case '/': oper=[[Div alloc]init]; break; } return oper; } @end
主函数
#import <Foundation/Foundation.h> #import "OperationFactory.h" int main(int argc, const char * argv[]) { @autoreleasepool { OperationFactory *factory=[[OperationFactory alloc]init]; Operation *oper=[factory createOperate:'+']; oper.numberA=100; oper.numberB=200; NSLog(@"%f",[oper opera]); } return 0; }