? 屬于類創建型模式。又叫工廠方法模式,又被成為多態工廠模式,因為它完全符合開閉原則。工廠父類負責定義創建產品對象的公共接口,工廠子類負責不同產品的具體實現,增強了代碼的擴展性。
? 開閉原則:類對于擴展是開放的,但是對于修改是封閉的。
? 包含有四個角色:PRoduct抽象產品,ConcreteProduct體產品,Factory抽象工廠,ConcreteFactory具體工廠。
? 當只有一個具體工廠時,在具體工廠中可以創建所有的產品對象,并且工廠設計方法為靜態設計方法時,工廠方法模式將退化為簡單工廠模式。
工廠模式保持了簡單工廠模式的優點,且客服了簡單工廠模式的缺點,完全符合開閉原則。但是在增加新工廠時,會成對增加系統類數, 增加了系統的復雜性。
? 屬于類創建型模式。簡單工廠模式最大的有點在于對象的創建和對象的使用分離,可以降低代碼的耦合度,使得兩者修改起來都相對容易;其二,靜態方法,調用方便;但是其最大的缺點在于工廠類不夠靈活,增加新的產品需要修改工廠內部的判斷邏輯,而且一旦產品較多時,工廠內部邏輯顯得較為復雜,違背了開閉原則。
? 適用情況:工廠類負責創建的對象比較少;調用者只需要傳入幾個參數,并不關心其創建細節。
? 屬于類創建型模式。一個產品類的實例如何被創建、組合和表達的細節,我們并不需要知道和關心時,那么就適用于所有的工廠類模式。
? 單例模式(Singleton Pattern):單例模式確保某一個類只有一個實例。
? 單例模式的要點有三個:一是某個類只能有一個實例;二是它必須自行創建這個實例;三是它必須向進程提供這個實例。單例模式是一個對象創建型模式。
? 單例類,必須提供一個私有的構造函數,確保調用者無法通過new關鍵字實例化它。除此之外還需要一個公共的靜態工廠getInstance方法來獲得實例和一個自身的私有靜態成員變量。
? 作用;避免產生過多的對象消耗過多的資源,或者說有的對象有且只能有一個。
? 懶漢式單例最大的弊端在于:已經實例化后,多線程還在串行執行getInstance方法,浪費不必要的資源。所以應該將synchronized關鍵字移到判空后面,雙層判空方法。
? builder模式特點;
需要生成的產品對象有復雜的內部結構,這些產品對象通常包含多個成員屬性。需要生產的產品對象的屬性相互依賴,需要指定其生成順序。新聞熱點
疑難解答