1. 程式人生 > >Android之大話設計模式--簡單工廠模式(靜態工廠方法模式)

Android之大話設計模式--簡單工廠模式(靜態工廠方法模式)

簡單工廠模式解釋:

簡單工廠模式(Simple Factory Pattern)屬於類的創新型模式,又叫靜態工廠方法模式(Static Factory Method Pattern),是通過專門定義一個類來負責建立其他類的例項,被建立的例項通常都具有相同的父親。

UML圖:

工廠角色-Creator:該模式的核心,由它負責建立所有類的內部邏輯。工廠類必須能被外界呼叫,建立所需要的產品物件。

抽象產品角色--Prodect:簡單工廠模式所建立的所有物件的父親,注意,這裡的父親可以是介面也可以是抽象類。它負責描述所有例項所共有的公共介面。

具體產品角色--Concrete Product:簡單工程模式做建立的具體例項物件,這些具體的產品往往都具有共同的父親。




深入分析:

簡單工廠模式解決的是如何去例項化一個合適的物件。

核心思想:有一個合適的類來負責建立例項的過程。

具體說:把產品看作是一系列的類的集合,這些類是由某個介面或抽象類派生出來的一個物件樹。而工廠類用來產生一個合適的物件來滿足客服的需求。

如果簡單工廠模式所涉及的具體產品之間沒有共同的邏輯,那麼可以用介面扮演抽象產品的角色

如果簡單工廠模式做設計的具體產品之間有共同的邏輯,那麼可以用抽象類扮演抽象產品的角色。

實際應用中,抽象產品和具體產品之間往往是多層次的產品結構



DEMO:GG請MM及她的室友到肯德基吃飯:






簡單工廠模式的優缺點分析:

優點:工廠類是整個模式的關鍵所在。它包含必要的邏輯判斷,能夠根據外界給定的資訊決定應該建立哪個類的物件。使用者在使用時可以根據工廠類去建立具體的例項,而無需瞭解這些物件是如何建立以及如何組織的。有利於整個軟體體系的優化。

缺點:由於工廠類集中了所有例項的建立邏輯,這就導致一旦這個工廠除了問題,所有的客戶端都會受到牽連;而且由於簡單工廠模式的產品基於一個共同的介面或抽象類,這樣一來,但產品的種類增加的時候,即有不同的產品介面或者抽象類的時候,工廠類就需要判斷何時建立何種種類的產品,這就和建立何種種類產品的產品互相混淆在了一起,

違背了單一職責。導致系統 喪失靈活性和可維護性。而且更重要的是,簡單工廠模式違背了“開放封閉原則”,就是違背了“系統對擴充套件開放,對修改關閉”的原則,因為當我新增加一個產品的時候,必須修改工廠類,相應的工廠類就需要重新編譯一遍。

總結:簡單工程模式分離產品的建立者和消費者,有力於原件系統結構的優化;但是由於一切邏輯集中於一個工廠類中,導致了沒有很高的內聚性,同時也違背了“開放封閉原則”。另外,簡單工廠模式的方法一般都是靜態的,而靜態工廠方法是無法繼承的,簡單工廠模式無法形成基於基類的繼承樹結構。