建立型模式中的工廠系列,有:簡單工廠模式、工廠方法模式、抽象工廠模式。
工廠方法模式在簡單工廠模式上做進一步抽象,實現後的功能是這樣的:當你需要什麼,你就建立生產這個產品的工廠,並用它獲取你需要的物件,不用關注建立細節。
場景變化:畫圖系統不再用同乙個工廠來統一負責所有圖形的建立,而是將具體圖形的建立過程交給專門的工廠子類去完成。我們先定義乙個抽象的圖形工廠類,再定義具體的工廠類來生成圖形,它們實現在抽象圖形工廠類中定義的方法。這種結構可以在不修改具體工廠類的情況下新增新的產品,如果想畫出新的圖形,只需要為新圖形建立乙個具體的工廠類和圖形產品類即可。
簡單工廠模式違反了開閉原則,工廠生產模式則改進了這一缺點,核心的工廠類不再負責所有產品的建立,而是將具體建立工作交給子類去做。這個核心類僅僅負責給出具體工廠必須實現的介面,而不負責哪乙個產品類被例項化這種細節,這使得工廠方法模式可以允許系統在不修改工廠角色的情況下新增新產品。但同時也將簡單工廠模式中工廠角色的內部邏輯的判斷重新交給了使用者,增加了使用者的開發量,不過這個可以用反射來解決。 優點
缺點工廠方法模式適用情況包括:
一天乙個設計模式(二) 工廠方法模式
工廠方法模式是對簡單工廠模式的一種改進。下面先簡單介紹簡單工廠模式 首先有乙個所有產品的父介面 產品介面 public inte ce product以及多個產品 public class product1 implements product public class product2 imple...
每天乙個設計模式(一) 簡單工廠模式
建立型模式中的工廠系列,有 簡單工廠模式 工廠方法模式 抽象工廠模式。簡單工廠模式實現了這樣乙個功能 當你需要什麼,只需要傳入乙個正確的引數,就可以獲取你所需要的物件,而無須知道其建立細節。假設這樣乙個場景 乙個畫圖系統想要畫出不同圖形 如圓形 矩形 三角形等 這些圖形類都源自同乙個基類。如果我們希...
設計模式(二) 工廠模式(工廠方法)
之前學習了簡單工廠我們明白了,簡單工廠雖然有一定的好處,但是還不夠好,它無法滿足開閉原則,我們在如果新增產品的話,就需要更改已有的工廠類。工廠方法模式就是在簡單工廠的基礎上,滿足開閉原則,讓我們只需要新增類就好,不用去更改已有 展示下之前的database mysql sqlserver三個類。pa...