【iOS-設(shè)計模式】創(chuàng)建型之簡單工廠模式

概念

設(shè)計模式(Design pattern)是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過分類編目的、代碼設(shè)計經(jīng)驗的總結(jié)。設(shè)計模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。簡單工廠模式是由工廠類根據(jù)傳入的參數(shù),動態(tài)決定應(yīng)該創(chuàng)建出對應(yīng)的產(chǎn)品類的實例。

實例

拿一個計算器舉例,有兩個可以輸入的數(shù)值,一個方法可以獲取計算的結(jié)果,我們可以先抽象出來一個計算處理類:

@interface Calculate : NSObject

/// 第一個數(shù)字
@property(nonatomic,assign) CGFloat firstNum;
/// 第二個數(shù)字
@property(nonatomic,assign) CGFloat secondNum;

/// 獲得結(jié)果
- (CGFloat)getResult;

@end

以下計算規(guī)則類都繼承自 Calculate

加法計算類:

#import "Calculate_Add.h"

@implementation Calculate_Add

- (CGFloat)getResult{
    return self.firstNum + self.secondNum;
}

@end

減法計算類:

#import "Calculate_Sub.h"

@implementation Calculate_Sub

- (CGFloat)getResult{
    return self.firstNum - self.secondNum;
}

@end

工廠實現(xiàn)

工廠類的定義:

@class Calculate;

@interface CalculateFactory : NSObject

+ (Calculate *)createOperateWithStr:(NSString *)str;

@end

工廠方法的實現(xiàn):

#import "CalculateFactory.h"
#import "Calculate_Add.h"
#import "Calculate_Sub.h"

@implementation CalculateFactory

+ (Calculate *)createOperateWithStr:(NSString *)str {
    if ([str isEqualToString:@"+"]) {
        Calculate_Add *calculate_Add = [[Calculate_Add alloc] init];
        return calculate_Add;
    }else if ([str isEqualToString:@"-"]){
        Calculate_Sub *calculate_Sub = [[Calculate_Sub alloc] init];
        return calculate_Sub;
    }else{
        return [[Calculate alloc] init];
    }
}

@end

調(diào)用

Calculate *calculate_add = [CalculateFactory createOperateWithStr:@"+"];
calculate_add.firstNum = 3.0f;
calculate_add.secondNum = 6.0f;
NSLog(@"簡單工廠模式-求和:%f",[calculate_add getResult]);

Calculate *calculate_sub = [CalculateFactory createOperateWithStr:@"-"];
calculate_sub.firstNum = 9.0f;
calculate_sub.secondNum = 3.0f;
NSLog(@"簡單工廠模式-求差:%f",[calculate_sub getResult]);

效果:

效果

優(yōu)點:

簡單工廠模式的核心是工廠類,該類中含有必要的判斷邏輯,可以決定在什么時候創(chuàng)建哪一個產(chǎn)品類的實例,客戶端可以免除直接創(chuàng)建產(chǎn)品對象的責(zé)任,而僅僅負(fù)責(zé)“消費”產(chǎn)品。 簡單工廠模式實現(xiàn)了對責(zé)任的分割。

缺點:

模式中工廠類集中了所有的產(chǎn)品創(chuàng)建邏輯,形成一個無所不知的全能類,當(dāng)所有的類不是繼承自同一個父類的時候擴(kuò)展比較困難。

源碼

源碼地址:FactoryPatternDemo

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容