设计模式--依然创建者
讀HeadFirst的工廠有一下幾條小感悟,這幾條是我之前看書時記錄下來的,這次又復習了下。其實創建類型的模式的主要作用在于集中創建對象,用時調用所需,以及在相似類型的對象創建的便捷性提供了幫助。
其實簡單工廠不是設計模式,更像是一種編程習慣!
store為了將pizza分成雙倍芝士或者全素型比薩
orderPizza只是將抽象的pizza進行操作,比如準備,燒烤,切片,裝盒操作,與具體的pizza類完全解耦
做哪種比薩是由具體的比薩店來決定的(紐約比薩店還是芝加哥比薩店)
工廠方法
abstract Product factoryMethod(String type)
1.工廠方法為抽象的,所以依賴子類來處理對象的創建
2.必須返回一個產品!
3.工廠方法將客戶和時機創建產品的代碼分離!
工廠方法的元素:
創建者(Creator):PizzaStore,NYPizzaStore,ChicagoPizzaStore
不需要知道在制造那個具體產品!
能夠產生產品的類為具體創造者(createPizza)
產品類(Product):Pizza,NYStyleCheesePizza,NYStyleVeggiePizza
,ChincagoStyleVeggiePizza,ChincagoStyleCheesePizza
實際制造!
能夠產生產品的類為具體創造者(createPizza)
工廠方法模式定義了一個創建對象的接口,但由子類決定要實例化的類是哪一個。
工廠方法讓類把實例化推遲到子類
當你直接實例化一個對象時,就是依賴它的具體類,不使用工廠模式,將大大依賴具體類!導致耦合度極大!
設計原則:要依賴抽象,不要依賴具體類!【依賴倒置原則】
依賴倒置知道方針:變量不可以持有具體類的引用:工廠避免這樣的做法!
不要讓類派生自具體類(派生自一個抽象)
不要覆蓋基類已經實現的方法!
抽象工廠:提供一個借口,用于創建相關或依賴對象的家族,而不需要指定具體類!
抽象工廠允許客戶使用抽象的接口來創建相關產品,保證客戶從具體的產品中解耦
【原料工廠就如同這個一樣!】
客戶端只需要知道一個抽象工廠,一個抽象產品 ,實際上是使用具體工廠實現具體產品(NYPizzaStore)
,同時這個具體產品是繼承自抽象產品的!
抽象工廠與工廠:都是通過子類來創建對象!客戶只需要知道所使用的抽象類即可!
轉載于:https://www.cnblogs.com/zzjanson/archive/2012/05/29/Design-Model-Factory2.html
總結
以上是生活随笔為你收集整理的设计模式--依然创建者的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 至于你信不信,我反正是信了——以类为单位
- 下一篇: SQL的or及括号