大话设计模式之简单的工厂模式

转载自 http://www.cnblogs.com/qianLL/p/5230323.html

 

第一章:代码无错就是优-简单的工厂模式

先建立一个计算类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; }
复制代码

你可能感兴趣的:(大话设计模式之简单的工厂模式)