C 設計模式 工廠模式

2022-08-05 09:24:15 字數 2048 閱讀 2964

最近打算總結一下設計模式(希望可以堅持寫完...)。

設計模式大體上可以分為三種:

1)建立型(5種)

具體包括:工廠方法(包括簡單工廠),抽象工廠,單例,建造者,原型

2)結構型模式(7種)

具體包括:介面卡,橋接,組合,裝飾器,**,外觀,享元

3)行為型模式(11種)

具體包括:策略模式,模版方法,命令,職責鏈,狀態,觀察者,中介者,迭代器,訪問者,備忘錄,直譯器

建立型模式的技巧主要應用於建立物件的方式上。

結構性模式的技巧主要在於對不同類之間的組合以實現**復用。

行為型模式的技巧在於不同類之間的相互作用及相互影響。

簡單工廠一般只包含乙個工廠,以及產品抽象類及其子類。

優點:實現了物件的建立與使用的分離。

缺點: 每增加乙個產品都要修改原來的**,且需要不斷增加新的邏輯。

//果汁抽象類

class

juice;

//果汁具體類,蘋果汁

juice

};//

果汁具體類,葡萄汁

class grapejuice : public

juice

};//

工廠類class

factory

return

null;

}};//

主函式的使用

intmain()

工廠方法在於為每一種產品建立乙個工廠。乙個工廠只生產一種產品。

因此需要同時包含產品抽象類和工廠抽象類。

優點:增加新的產品不需要修改原來的**。

果汁抽象類

class

juice;

//果汁具體類,蘋果汁

juice}//

果汁具體類,葡萄汁

class grapejuice : public

juice

};//

工廠抽象類

class

factory

//蘋果汁工廠類

class

public

: juice*createjuice()

};class

grapejuicefactor

};int

main()

讓乙個工廠擁有好幾條產品線。

優點:方便擴充套件新的產品系列

缺點:增加新的產品時,需要修改所有工廠

果汁抽象類

class

juice;

class

jam//

果汁具體類,蘋果汁

juice

};//

果汁具體類,葡萄汁

class grapejuice : public

juice

};//

果醬具體類,蘋果醬

jam};

//果醬具體類,葡萄醬

class grapejam: public

jam};

//工廠抽象類

class

factory;

//工廠具體類,蘋果工廠

class

public

: juice*createjuice()

jam*createjame()

};//

工廠具體類,葡萄工廠

class

grapefactory

jam*createjame()

};int

main()

C 設計模式 工廠模式

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

C 設計模式 工廠模式

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

C 設計模式 工廠模式

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