簡單工廠模式

2021-10-11 20:34:27 字數 2123 閱讀 5414

在程式設計中,我們一般會寫很多類來描述屬性方法等等,當需要使用這個類時,用「new」建立這個類的物件,便可以去使用這個類,但這個物件便會依賴上這個類,每當這個類有改動,物件就要做相應的改動,這就形成了物件與類之間的高耦合,違背了「高內聚,低耦合」的設計標準。這時候使用「簡單工廠模式」便可以處理這種情況了。

在業務處理需要使用類時,不去直接建立這個類的例項物件 (既獲取這個類的例項方式不是去直接new這個類),而是通過乙個工廠去獲取這個類的例項物件,這個工廠就負責來動態建立各種類的例項,當你需要哪個用哪個類時,告訴這個工廠,它會給你建立你需要的例項物件。這樣就達到了業務邏輯與類之間的解耦(不明白可以先看下面的demo,再回來看這段話)。

1.最簡單的方式就是if else:

console.

writeline

("歡迎來吃雞啊...");

console.

writeline

("請選擇地圖\n 1:海島模式 \n 2.雨林模式 \n 3.沙漠模式 \n 4.雪地模式");

int num = convert.

toint32

(console.

readline()

);if(num ==1)

console.

writeline

("歡迎來到海島地圖,加油特種兵...");

else

if(num ==2)

console.

writeline

("歡迎來到雨林地圖,加油特種兵...");

else

if(num ==3)

console.

writeline

("歡迎來到沙漠地圖,加油特種兵...");

else

if(num ==4)

console.

writeline

("歡迎來到雪地地圖,加油特種兵..."

);

是不是很簡單(我以前**就是這種風格,哈哈,工作需求完成很快,後期迭代更改需求真是頭疼)。問題來了,如果加了乙個新地圖火星地圖怎麼辦?不斷加地圖怎麼辦?用上面的邏輯那就是直接改條件,沒有ifelse解決不了的邏輯,如果有就再加一行!上面示例只是簡單的邏輯,在我們工作開發中,邏輯不可能如此簡單,遇到此類問題,每次都是去修改新增條件,如果新增條件有問題,可能導致之前正確執行的邏輯一起掛掉。

2.使用簡單工廠模式:

// 模式介面

public

inte***ce

icombatmode

// 海島模式

public

class

island

:icombatmode

}// 雨林模式

public

class

rainforest

:icombatmode

}// 沙漠模式

public

class

desert

:icombatmode

}//雪地模式

public

class

snow

:icombatmode

}// 地圖模式工廠

public

class

modefactory

return combatmode;

}// 列舉所有模式

public

enum modenames

}static

void

main

(string

args)

combatmode.

saymode()

;}

以上就是使用簡單工廠模式實現的**,當需要修改新增地圖模式只需要去關注修改對應的類即可,不要去修改業務中的**。

簡單工廠模式確實是通過工廠動態選擇對建立物件,甚至可以設定配置檔案,讓工廠類根據配置檔案中的條件來實現獲取對應例項物件 ,讓業務邏輯與類之間解耦和。但是工廠與類之間卻形成了高耦合,使得工廠類中的邏輯複雜,責任過多,如果工廠類出現了問題,將使得整個系統癱瘓,這就是簡單工廠模式乙個缺點。

工廠模式 簡單工廠

簡單工廠其實並不是乙個設計模式,反而比較像一種程式設計習慣。我個人的這樣總結簡單工廠 建立乙個類,封裝建立物件的 故事 現在我要開一家披薩店,叫bbk 必敗客 披薩,賣很多種披薩 芝士披薩 榴蓮披薩等等,我有乙個orderpizza string type 方法,根據客戶傳來的type來提供不同的披...

工廠模式 簡單工廠

工廠 處理建立物件的細節。目的 將例項化具體類的 從應用中抽離,或者封裝起來,可以避免干擾應用的其他部分。簡單工廠 簡單工廠其實不是乙個設計模式,反而像一種程式設計習慣。產品實現 desc 產品a public inte ce a class a1 implements a override pub...

簡單工廠模式,工廠模式,抽象工廠模式

三種模式看了一天,記錄下自己的理解 headfirst,比薩店為例 1,簡單工廠模式 乙個具體的工廠類 pizzafactory 乙個抽象的產品類pizza,可以派生出多個具體的產品類 客戶 pizzastore類 工廠類 pizzafactory類關聯產品類pizza,工廠生產出不同型別的pizz...