C 的設計模式 工廠模式

2021-05-28 13:31:00 字數 1345 閱讀 2331

using system;

public abstract class light

public class bulblight : light

public override void turnoff()

}public class tubelight : light

public override void turnoff()

}public abstract class creator

public class bulbcreator : creator }

public class tubecreator : creator

}public class client

}

上面的例子可以很形象的說明工廠設計模式,在main中已開始就建立了兩條新的生產線:c1和c2,其中c1生產bulb而c2生產tube,從此以後就利用這兩條生產線生產燈,在本例中的實際情況就是l1和l2這兩盞燈。

那麼現在就存在幾個相互之間的關係問題:

1、creator和bulbcreator之間的關係——bulbcreator是繼承creator的,其是在creator的基礎上進一步增加功能或者重寫功能實現的。

2、bulbcreator和tubecreator之間的關係——這兩者應該是平等的關係,就像我們在同時生產兩種產品,但是他們擁有一樣的基礎,就是creator。

3、light和creator的之間的關係——我個人覺得這是最主要的關係,可以看到creator返回的是乙個new的物件,所以這裡可以簡單的認為creator幫助我們實現了物件,creator只是乙個介面,提供了乙個方法,在具體實現中我們可以定製我們的生產,就像給了我們錢,至於怎麼用後面再說。

4、creator和bulbcreator之間的關係——這裡就實現了錢用在**的問題,也就是過載了函式,以便我們具體的使用

5、light和bulblight之間的關係——這裡其實和4非常的像,我們也就不再多說了

6、bulbcreator和bulblight之間的關係——乙個需求,乙個提供,比如我們想要bulblight,那麼就必須要先定義bulbcreator,然後生產bulblight

其實我覺得上面的程式可以寫的更加直白一點,即將creator和light分別寫成bulbcreator和bulblight,這樣會更加明顯一點。

相信搞清楚了這幾組關係,那麼對於工廠設計模式就不會那麼陌生了。

優點:這樣我們可以先定義好light,然後各自根據自己的需要繼承light,創造自己的light,然後再定義乙個對應的creator,用來生產物件,這樣就不會和任何已經存在的物件產生衝突,有助於程式的擴充套件,而且人們也可以防止對已有**的改動,有安全性。

C 設計模式 工廠模式

可以方便的使用繼承來實現建立方法的多樣性,區別於使用靜態方法定義簡單工廠。工廠方法模式 定義了乙個建立物件的介面,但由於子類決定要例項化的類是哪乙個。工廠方法讓類把例項化推遲到了子類。依賴倒置原則 要依賴抽象,不要依賴具體類 以下指導方針將避免你再oo設計中違反依賴倒置原則 盡量達到這個原則,不一定...

C 設計模式 工廠模式

建立型模式,提供了一種建立物件的最佳方式。在工廠模式中,我能在建立物件時不會對客戶端暴露建立邏輯,並且通過使用乙個公用的介面來指向新建立的物件。我們將建立乙個 shape 介面和實現 shape 介面的實體類。下一步是定義工廠類 shapefactory。factorypatterndemo,我們的...

C 設計模式 工廠模式

目錄 基本概念 及例項 工廠方法模式 factory method 定義乙個用於建立物件的介面,讓字類決定例項化哪乙個類。工廠方法使乙個類的例項化延遲到其子類 簡單工廠模式的最大優點在使用者工廠類中包含了必要的邏輯判斷,根據客戶端的選擇條件動態例項化相關的類,對於客戶端來說,去除了具體產品的依賴。工...