簡單工廠模式vs工廠方法模式:
工廠方法模式(factory method)。定義乙個用於建立物件的介面。讓子類決定例項化哪乙個類。工廠方法模式使乙個類的例項化延遲到其子類。
工廠方法模式實現時。client須要決定例項化哪乙個工廠來實現對應的類。選擇推斷的問題還是存在的,也就是說,工廠方法模式把簡單工廠的內部邏輯推斷移動了client**來進行。
想要加功能,在簡單工廠模式中,須要改工廠類,而若使用工廠方法模式,須要改client。
effective c++:
1:別讓異常逃離析構函式
(1)。析構函式絕對不能吐出異常。假設乙個被析構函式呼叫的函式可能丟擲異常。析構函式必須捕捉不論什麼異常,然後吞下他們或者結束程式。
(2)。假設客戶須要對某個操作函式執行期間丟擲的異常進行反應,那麼class應該提供乙個普通函式(而非在析構函式中)執行該操作。
2:決不在構造或者析構函式中呼叫virtual函式
(1)。在構造或者析構中絕不要呼叫virtual函式。由於這類呼叫絕不下降到derived class(比起當前執行構造和析構的類)
3:另oprerate=返回乙個reference to *this
4:在operate=中處理「自我賦值」
(1),確保當物件自我賦值時 operate= 有良好行為。
(2),確定不論什麼函式操作乙個以上的物件。而當中多個物件是同乙個物件時。其行為仍然正確。
5:複製物件時勿忘記base class 中的成分
(1),copying 函式應該確保複製」物件內全部成員變數「以及」全部 base class 成分"。
(2)。不要嘗試以某個 copying 函式實現還有乙個 copying 函式。應該將共同技能放進第三個函式中,並由兩個 copying 函式共同呼叫。
6:以物件管理資源
(1),為了防止資源洩露,請使用raii (resource acquisition is initialization)物件。他們在建構函式中獲取資源並在析構函式中釋放資源。
(2),兩個常被使用的raii classes 各自是 tr1::shared_ptr 和 auto_ptr 。前者一般是較佳選擇,由於其 copy 行為比較直觀。若選擇 auto_ptr ,複製動作會使它指向null。
7:在資源管理類中小心 copying 行為
(1),複製 raii 物件必須一併複製它所管理的資源。所以資源的 copying 行為決定 raai 物件的 copying 行為。
(2)。普遍而常見的 raai class copying 行為是:抑制 copying、施行引用計數器法(reference counting)。
只是其它行為也都可能被實現。
工廠模式之工廠方法模式
工廠方法模式 factory method pattern 是指定義乙個建立物件的工廠介面,但讓實現這個介面的類來決定例項化哪個類工廠方法讓類的例項化推遲到子類中進行。在工廠方法模式中使用者只需要關心所需產品對應的工廠,無須關心建立細節,而且加入新的產品符合開閉原則,並且每個工廠只能建立自己的產品,...
工廠方法模式 工廠方法模式
工廠方法模式是簡單工廠模式的公升級版,簡單工廠模式不符合設計模式的原則 即 單一職責,開閉原則 優點 職責明確,擴充套件方便 缺點 需要建立多個工廠 實現步驟 1.將工廠通用方法抽取介面 例如 ifactory 2.將產品抽取介面 例如 icar 3.實現各種產品 例如 baomacar,benti...
設計模式學習之 工廠方法模式
1.定義乙個抽象產品介面 車 抽象產品類 public inte ce icar 2.定義多個具體產品類 寶馬車 具體產品類 public class bmwcar implements icar 賓士車 具體產品類 public class benzcar implements icar 3.定義...