當使用「new」時,是在例項化乙個具體類,用的是實現不是介面。
爭對介面程式設計,可以隔離掉以後系統可能發生的一大堆改變。
工廠(factory)處理建立物件的細節。並將這樣的行為封裝在子類中。(通過讓子類決定該建立的物件是什麼,來達到物件建立的過程封裝的目的)。工廠方法讓類把例項化推遲到子類。
靜態方法:不需要使用建立物件的方法來例項化物件。缺點:不能通過繼承來改變建立方法的行為。
當直接例項化乙個物件,就是在依賴它的具體類。
依賴倒置原則:要依賴抽象,不要依賴具體類。(不能讓高層元件(由其他低層元件定義其行為的類)依賴底層元件),要遵循依賴倒置原則,工廠方法是很好的辦法。
如果使用new,就會持有具體類的引用。
違反依賴倒置原則:
變數不可以持有具體類的引用。
不要讓類派生自具體類。
不要覆蓋基類中已實現的方法。
工廠方法:
abstract person factorymethod(string type)
工廠方法是抽象的,所以依賴子類來處理物件的建立。
工廠方法必須返回乙個產品,要建立的產品。超類中的方法,通常用到工廠方法返回值。
工廠方法將客戶和實際建立具體產品的**分割開來。
工廠方法可能需要引數來指定具體的產品。
工廠方法通過繼承實現,實現工廠方法。抽象工廠通過組合實現。
在spring中比較常見。
工廠模式(工廠模式4)
工廠模式 工廠模式 相對於簡單工廠模式,我們要再建乙個工廠介面,對於其他要實現的的類都實現這個介面,建立乙個實現類的工廠 public class audica ctory implements ca ctory 通過這個實現類工廠來建立我們要的實現類 新增工廠實現類,方便新增新的類,如果要建立乙個...
4 工廠模式
head first design patterns master src headfirst designpatterns factory 案例 新建披薩類 將變化的地方進行封裝。簡單工廠不是乙個 真正的 模式,更像是一種程式設計習慣。所有工廠模式都用來封裝物件的建立。工廠方法模式通過讓子類決定該...
4 工廠模式
舉例 製作不同口味的披薩 榴蓮 火腿兩種口味 不同口味的披薩製作的過程是不一樣的。product 抽象產品的生產過程 pizza類 concreteproduct 繼承product,實現了製作過程 hampizza durianpizza factory 返回客戶購買的披薩 定義披薩建立過程 pu...