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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大话设计模式之简单的工厂模式相关的知识,希望对你有一定的参考价值。

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

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

技术分享

以上是关于大话设计模式之简单的工厂模式的主要内容,如果未能解决你的问题,请参考以下文章

《大话设计模式》之简单工厂模式

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

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

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

大话设计模式第八章之简单工厂模式

大话设计模式第一章之简单工厂模式