簡單工廠模式

2021-05-01 10:07:18 字數 1058 閱讀 2264

簡單工廠的作用是例項化物件,但不需要使用物件的人了解該物件具體屬於哪個子類。這些子類都派生於同乙個基類(可以是抽象類,也可以是介面),都有相同的介面(可供外部呼叫的方法的集合)。這些子類對介面的實現不同。

一般簡單工廠會有乙個例項化物件的靜態方法,該方法根據傳入的引數,例項化並返回物件。

類圖:1.

意圖簡單工廠的作用是例項化物件,而不需要客戶了解這個物件屬於哪個具體的子類。

2. 使用場合

簡單工廠例項化的類具有相同的介面,種類有限並且基本不需要擴充套件時,可以使用簡單工廠。

3. 效果

採用簡單工廠的優點:可以使使用者根據引數獲得對應的類的例項,避免了直接例項化,降低了耦合性。缺點:可以例項化的型別在編譯期間已經被確定如果增加新型別,則需要修改工廠。簡單工廠需要知道所有要生成的型別,當子類過多或者子類層次過多時不適宜使用。

4. 實現

通常簡單工廠不需要例項化,而是採用靜態方法。

5. 例子

在一些使用資料庫的管理系統中,需要根據配置來連線資料庫,然後進行資料庫操作。有時,需要程式支援不同的資料庫,比如

oracle

和sqlserver

。這時,就可以使用簡單工廠模式,下面是乙個具體方案:

其中,具體使用的資料庫型別可以放到配置檔案中。

進行資料庫操作時,可以呼叫

factory

的getdatabase

方法來生成乙個資料庫物件,利用該物件來完成資料庫操作。

在這裡使用簡單工廠模式的好處是:

如果oracledatabase

或者sqlserverdatabase

某個方法的實現改變時,只需要修改具體類的**即可,而不會影響到呼叫它們的介面的**。

如果需要增加對其他資料庫的支援,只需要新增新的資料庫類,修改工廠方法,以及修改配置檔案,並不會影響到呼叫它們的介面的**。

部分內容參考了

niuyongjie

的csdn

部落格文章,連線為:

工廠模式 簡單工廠

簡單工廠其實並不是乙個設計模式,反而比較像一種程式設計習慣。我個人的這樣總結簡單工廠 建立乙個類,封裝建立物件的 故事 現在我要開一家披薩店,叫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...