在學習簡單工廠模式之前讓我們先看看不用簡單工廠模式所帶來的不便把,我們以乙個四則運算的計算器為例逐步的進行說明問題,首先先看看用面向程式的思想實現計算器的過程
using雖然上面的**可以實現四則運算但他確是面向程式實現的,這就意味著這種**不具有易維護,易擴充套件,易復用,靈活性強的特點system;
using
system.collections.generic;
using
system.linq;
using
system.text;
namespace
簡單工廠模式
else
break
; }
console.writeline(
"計算結果是:
", result);
console.readkey();
}catch
(exception ex)}}
}
所以我們現在就要將客戶端**和運算類**分開,降低程式的耦合度,使得程式修改一處的時候不影響另一處
如下**:
using雖然這樣確實好了很多,但還是存在很大不足,加入你要加入乙個運算型別那就必須進入這個類,如果不小心將其中的乙個運算改了,那麻煩可就大了(尤其和金錢有關的系統)system;
using
system.collections.generic;
using
system.linq;
using
system.text;
namespace
簡單工廠模式高階
}public
class
operate
else
break
; }
return
result;}}
}
所以我們就要想辦法讓程式對擴充套件開放,對修改關閉——開放封閉原則
在這裡我們就要引入多型的概念,就是子類繼承父類的屬性和方法,並以不同的方式實現,用父類例項化子類,並用父類呼叫子類中的方法和屬性進行計算(自己的理解)
下面這段**就引進多型的概念同時也是我們今天的主題——簡單工廠模式,讓大家深切的感受一下
using所謂簡單工廠就是將運算類與前台程式的互動封裝起來,使用者只需輸入所要進行計算的符號,工廠就會自動幫助使用者選擇要使用哪個運算類進行計算system;
using
system.collections.generic;
using
system.linq;
using
system.text;
namespace
簡單工廠模式示例
}public
class
opration
set
}public
double
numberb
set
}public
virtual
double
getresult()
}class
add : opration
}class
sub : opration
}class
mul : opration
}class
div : opration
result = numbera /numberb;
return
result;}}
//類的預設訪問級別是internal(只能在同乙個命名空間下訪問)
class
operationfactory
return
opra;}}
}
工廠模式 簡單工廠
簡單工廠其實並不是乙個設計模式,反而比較像一種程式設計習慣。我個人的這樣總結簡單工廠 建立乙個類,封裝建立物件的 故事 現在我要開一家披薩店,叫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...