大話設計模式之簡單的原廠模式,大話設計模式工廠

來源:互聯網
上載者:User

大話設計模式之簡單的原廠模式,大話設計模式工廠

第一章:代碼無錯就是優-簡單的原廠模式

先建立一個計算類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;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.