第一章:代码无错就是优-简单的工厂模式
先建立一个计算类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"#import "Operation.h"@interface OperationFactory : NSObject@property(nonatomic,strong)Add *add;@property(nonatomic,strong)Sub *sub;@property(nonatomic,strong)Mul *mul;@property(nonatomic,strong)Div *div;-(double)createOperate:(char)opreate;@end
OperationFactory.m
#import "OperationFactory.h"@implementation OperationFactory-(double)createOperate:(char)opreate{ double result = 0.0; switch (opreate) { case '+': result= self.add.OperationAdd; break; case '-': result=self.sub.operaSub; break; case '*': result=self.mul.OperaMul; break; case '/': result=self.div.OperaDiv; break; } return result;}@end
主函数
#import <Foundation/Foundation.h>#import "OperationFactory.h"int main(int argc, const char * argv[]) { @autoreleasepool { double result; OperationFactory *factory=[[OperationFactory alloc]init]; Add *ad=[Add new]; ad.numberA=10; ad.numberB=6; factory.add=ad; // Div *di=[Div new];// di.numberA=21;// di.numberB=0;// factory.div=di;//// result =[factory createOperate:'/']; result=[factory createOperate:'+']; NSLog(@"%lf",result); } return 0;}
images/loading.gif' data-original="http://images2015.cnblogs.com/blog/818241/201603/818241-20160301112952283-2035632336.png" />
原标题:大话设计模式之简单的工厂模式
关键词:设计模式