最近打算總結一下設計模式(希望可以堅持寫完...)。
設計模式大體上可以分為三種:
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 定義乙個用於建立物件的介面,讓字類決定例項化哪乙個類。工廠方法使乙個類的例項化延遲到其子類 簡單工廠模式的最大優點在使用者工廠類中包含了必要的邏輯判斷,根據客戶端的選擇條件動態例項化相關的類,對於客戶端來說,去除了具體產品的依賴。工...