iOS設計模式之簡單工廠模式

2021-07-31 06:42:52 字數 2182 閱讀 6207

乙個簡單計算器,用四則運算來考慮的話,加減乘除,那麼初學者會覺得很簡單,用if條件來進行判斷,判斷好了之後就可以完成要求,而稍微有經驗點的 可能會選擇switch case的判斷方式,例如下面的**:

operation運算方法的邏輯

- (void)operationwithnumbera:(double )numbera withoperator:(char)operator withnumberb:(double )numberb

else

case

'e':

nslog(@"退出");

break;

default:

break;

}

而客戶端方面的** 我們可以這麼寫

/**

* 四則運算

*/- (void)operation

在我們得到需要的數值之後,呼叫運算方法做判斷,算出結果。

這樣寫就會比if的判斷清晰,因為我們已經把業務邏輯和介面顯示的部分完全分離了,在任何需要用到的地方,我們就可以直接複製這段**,完成運算。

但是假如,我有一天的運算需求不滿足於四則運算,而是希望加上開根號或者平方的運算方法,該怎麼辦。難道我們還要回頭,去switch語句裡再加判斷條件,之後在介面上增加提示麼?

之前的**,我們只用到了物件導向的三個特性之一,就是封裝,而解決我上一段話提出的疑問,我們可以用到另外兩個特性,多型和繼承來實現。

為了實現之前的要求,在不改動其他**的情況下,能夠增加更多的運算方法,或者修改出問題的運算方法。那麼我們首先先把四則運算,封裝成四個類,即為加法類、減法類、乘法類、除法類。

@implementation

addoperation

/** * 加法

*/+ (double)addoperationwithnumbera:(double)numbera withnumberb:(double)numberb

@implementation

suboperation

/** * 減法

*/+ (double)suboperationwithnumbera:(double)numbera withnumberb:(double)numberb

@implementation

muloperation

/** * 乘法

*/+ (double)muloperationwithnumbera:(double)numbera withnumberb:(double)numberb

@implementation

divoperation

/** * 除法

*/+ (double)divoperationwithnumbera:(double)numbera withnumberb:(double)numberb

else

nslog(@"%f",result);

return result;

}

這樣我們就已經把四則運算,封裝成了四個類。因為偷懶,我並沒有設計介面模型,只是把結果輸出來,所以每段輸出結果的nslog請不要介意。

接下來,我們在簡單工廠的operation類中,把呼叫這四個類的運算方法實現。

/**

* 封裝了乙個運算方法

* * @param numbera 數字a

* @param operator 運算子

* @param numberb 數字b

*/+ (void)operationwithnumbera:(double )numbera withoperator:(char)operator withnumberb:(double )numberb

}

以上就是在簡單工廠的類中,呼叫四個運算方法的類,來實現運算,並且成功解耦合,有利於以後的維護和擴充套件。客戶端方面的**也就非常簡單。

/**

* 四則運算

*/- (void)operation

客戶端的**還是偷懶,沒有設計ui部分,所以也直接把資料代入進去了,但是大體的思路就是這樣。直接用物件導向的三大特性來解決問題,在設計**時,一定要本著可維護、可復用、可擴充套件、靈活性好的設計思路來設計。尤其要注意,這裡的可復用,可不是可複製哦。

iOS設計模式之簡單工廠模式

最近在看關於設計模式的書籍,開始覺得在設計程式架構之時,能夠靈活運用這些設計模式,將變得非常具有美感。乙個好的設計模式使得程式更加的靈活,容易修改,易於使用。從最簡單的簡單工廠模式開始學起,舉乙個實現計算器的例子,來完成簡單工廠模式。乙個簡單計算器,用四則運算來考慮的話,加減乘除,那麼初學者會覺得很...

iOS設計模式之簡單工廠模式

工廠方法 factorymethod 模式的定義 定義乙個建立產品物件的工廠介面,將產品物件的實際建立工作推遲到具體子工廠類當中。這滿足建立型模式中所要求的 建立與使用相分離 的特點。如果要建立的產品不多,只要乙個工廠類就可以完成,這種模式叫 簡單工廠模式 它不屬於 gof 的 23 種經典設計模式...

iOS 設計模式之工廠模式

ios 工廠模式我的理解是 他就是為了建立物件的 建立物件的時候,我們一般是alloc乙個物件,如果需要建立100個這樣的物件,如果是在乙個for迴圈中還好說,直接一句alloc就行了,但是事實並不那麼如意,我們可能會在不同的地方去建立這個物件,那麼我們可能需要寫100句alloc 了,但是如果我們...