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


    转载自 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;
    }
    复制代码

  • 相关阅读:
    python中神之bug
    常用好的软件
    远程登录
    centos7改静态ip
    SpringMVC归纳
    mysql数据库操作手册
    MyBatis归纳
    Maven归纳
    maven操作手册
    java知识库
  • 原文地址:https://www.cnblogs.com/gaomaolin_88/p/5244153.html
Copyright © 2020-2023  润新知