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


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

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

  • 相关阅读:
    PHP 小tip .(@)符号和 php if 赋值
    PHP定义字符串时单引号和双引号的区别
    笔记本 windows 10 安装
    unix_12c_db_init
    教你如何使用php session
    js和 php 介绍
    PHP 简单答题系统
    PHP list() 函数
    PHP集成支付宝快速实现充值功能
    eclipse如何导入PHP的项目
  • 原文地址:https://www.cnblogs.com/qianLL/p/5230323.html
Copyright © 2020-2023  润新知