除了使用new關鍵字以外,還有更多製造物件的方法。new意味著在例項化乙個具體的類,所以物件的方法是準確的實現,而非抽象的方法定義。因此這樣一來**將會缺乏彈性。
我們針對介面程式設計,可以隔離掉以後系統中可能發生的一大堆改變,如果**針對介面來寫,那麼對於乙個方法的實現將會是多種多樣的。當**使用大量具體類時,一旦加入新的類,那麼就需要修改大量的**。也就是說**並非對」修改關閉「。想用新的具體型別來擴充套件**,就必須要重新開啟它。
工廠處理建立物件的細節。由於實際執行中不同的物件會對類有多種多樣的要求,將建立物件包裝進乙個類中,當以後實現改變時,只需要改變這個類即可。
簡單工廠並不是乙個設計模式,反而比較像是一種程式設計習慣。
首先定義乙個公共介面
inte***ce component
其次是兩種實現
class obj1 : component
public void operation()
}class obj2 : component
public void operation()
}
最後是簡單工廠
class fatory
else
}}
工廠方法模式定義了乙個建立物件的介面,但由於子類決定要例項化的類是哪乙個。工廠方法讓類把例項化推遲到子類。
**裡減少對具體類的依賴是好事,「依賴倒置原則」:要依賴抽象,不要依賴具體類。
1)變數不可以持有具體類的引用。(可以改用工廠來避開這樣的做法)
2)不要讓類派生自具體類。
3)不要覆蓋基類中已經實現的方法。(如果覆蓋基類已經實現的方法,說明該基類不是乙個真正適合被繼承的抽象。基類中已經實現的方法,應該由所有的子類共享。)
抽象工廠模式提供了乙個介面,用於建立相關或者依賴物件的家族,而不需要明確指明具體類。
抽象工廠允許客戶使用抽象的介面來建立一組相關的產品,而不需要知道實際產出的產品是什麼。
設計模式之Factory 工廠模式
工廠模式是很常見的一種模式,主要由三個元素構成 生產者 產品和購買者 1.生產者 根據產品名稱或者產品的特性生產相應的產品 2.產品 具有某種共性的產品,把產品的共性抽象到介面中,而每一種具體的產品針對本身特有的性質來實現介面方法 3.購買者 購買者向生產者訂購某種產品,生產者將產品生產出來交給購買...
設計模式 2 工廠模式(Factory)
個人而言我認為工廠模式是應用最為廣泛的一種模式了,工廠模式也屬於建立型模式,一般來說分為 簡單工廠模式 抽象工廠 abstactfactory 模式。這個模式有什麼好處呢?我們可以通過下面這個例子來 假設工廠生產一些了很多種產品,並且需要為這些產品設計很多的包裝,每個產品用來展示用各自的包裝設計展示...
設計模式 6 工廠模式Factory
工廠模式有三種 簡單工廠模式,抽象工廠模式和工廠方法模式。1 簡單工廠模式 以圖形為例 圖形介面 inte ce shape 圓形 class circle implements shape 矩形 class rectangle implements shape 圖形工廠 class shapefa...