1. 程式人生 > >設計模式之工廠三兄弟(卷二)

設計模式之工廠三兄弟(卷二)

0x00 為什麼需要工廠模式

使用工廠模式的目的是使得物件的建立和使用分離。一個物件的職責有三種,物件本身所具有的職責,建立物件的職責,使用物件的職責。

0x01 簡單工廠模式

是其他兩個工廠模式的基礎。

  1. 簡單工廠定義:根據引數的不同返回不同的具體類的例項,建立的例項通常具有共同的父類。建立例項的方法是靜態的,所以也叫靜態工廠模式。
  2. 優點:簡化建立物件例項的步驟;使用配置檔案,在不修改任何客戶端程式碼的情況下更換和增加新具體產品類。
  3. 缺點:系統擴充套件困難,一旦新增新產品就不得不修改工廠邏輯。如果具體產品類過多,會使得工廠類過於龐大。
  4. 適用場景:工廠類負責的物件不多,不會造成工廠方法中的業務邏輯太過複雜。客戶端不關心建立物件的過程。

典型模板

class XXXFactory {  
    //靜態工廠方法  
    public static Chart getChart(String type) {  
        XXX x = null; //XXX為父類 
        if (type.equals("x1")) {  
            chart = new XXX1();  
        }  
        else if (type.equals("x2")) {  
            chart = new XXX2();  
        }  
        else
if (type.equals("x3")) { chart = new XXX3(); } return chart; } }

0x10 工廠方法模式

工廠方法模式中包含如下幾個角色。

  • Product(抽象產品):它是定義產品的介面,是產品物件的公共父類。
  • ConcreteProduct(具體產品):它實現了抽象產品介面,具體工廠和具體產品之間一一對應
  • Factory(抽象工廠):聲明瞭工廠方法,用於返回一個產品。抽象工廠是工廠方法模式的核心。
  • ConcreteFactory(具體工廠):實現了抽象工廠中定義的工廠方法,由客戶端呼叫,返回具體產品類的例項。

  1. 優點:客戶端無需知道具體產品類,只需知道具體工廠類;加入新產品時,無需改動原有程式碼,只要新增一個具體工廠和具體產品。
  2. 缺點:加入新產品時,需要同時真假工廠和產品兩個類,造成相識程式碼過多。
  3. 適用場景:客戶端不知道它所需要的物件的類。抽象工廠類通過其子類來指定建立哪個物件。

0x11 抽象工廠模式

抽象工廠模式為建立一組物件提供了一種解決方案。而工廠方法是建立一種產品

  • 在抽象工廠中聲明瞭多個工廠方法,用於建立不同型別的產品,抽象工廠可以是介面,也可以是抽象類或者具體類。
  • 抽象工廠模式中,增加新的產品族很方便,但是增加新的產品等級結構很麻煩。

(1) 產品等級結構:產品等級結構即產品的繼承結構,如一個抽象類是電視機,其子類有海爾電視機、海信電視機、TCL電視機,則抽象電視機與具體品牌的電視機之間構成了一個產品等級結構,抽象電視機是父類,而具體品牌的電視機是其子類。
(2) 產品簇:在抽象工廠模式中,產品族是指由同一個工廠生產的,位於不同產品等級結構中的一組產品,如海爾電器工廠生產的海爾電視機、海爾電冰箱,海爾電視機位於電視機產品等級結構中,海爾電冰箱位於電冰箱產品等級結構中,海爾電視機、海爾電冰箱構成了一個產品族。

  1. 優點:增加新的產品族很方便。
  2. 缺點:增加新的產品等級結構麻煩。
  3. 適用場景:系統中有多於一個的產品族,而每次只使用其中某一產品族。產品等級結構穩定,設計完成之後,不會向系統中增加新的產品等級結構或者刪除已有的產品等級結構。

相關推薦

設計模式工廠兄弟

0x00 為什麼需要工廠模式 使用工廠模式的目的是使得物件的建立和使用分離。一個物件的職責有三種,物件本身所具有的職責,建立物件的職責,使用物件的職責。 0x01 簡單工廠模式 是其他兩個工廠模式的基礎。 簡單工廠定義:根據引數的不

java設計模式——建立型工廠兄弟1

自大學課程初識設計模式以來,就越發覺得有必要系統學習一下設計模式。 剛好在實習前準備期間課比較少,抽出一點時間整理一下記一些筆記,複製貼上比較多。 筆記比較適合學習過設計模式的同學。 Simple Factory Pattern(簡單工廠模式)

java設計模式——建立型工廠兄弟3

自大學課程初識設計模式以來,就越發覺得有必要系統學習一下設計模式。 剛好在實習前準備期間課比較少,抽出一點時間整理一下記一些筆記,複製貼上比較多。 筆記比較適合學習過設計模式的同學。 Abstract Factory Pattern(抽象工廠模式)

設計模式】-工廠兄弟

前言    學習了建立型的模式之後,發現有三個兄弟,及其相似,可以說它們三個是一個迭代的過程、不斷升級的過程,那就來仔細的瞭解一下他們的各個的優點吧。 簡單工廠模式    簡單工廠模式就是把一些相似的東西拿出來,進行抽象,比如書上的例子,加減乘除,我們定義

設計模式工廠兄弟

前言 今天給大家帶來滿滿乾貨,不僅有工廠三兄弟,還有面向物件和麵向過程的思想,以及介面和抽象類區別,希望大家認真閱讀,滿載而歸! 簡介 工廠設計模式使用常用而且常見的面向物件設計模式,它一共有三種: 簡單工廠 工廠 抽象工廠 這是由簡單到複雜的順序

設計模式觀察者-Java簡單例子

1、定義:源於GOF的Design Patterns一書。 Define a one-to-many dependency between objects so that when oneobject changes state, all its dependents are notifie

設計模式工廠模式包含模式

設計模式是一套被反覆使用,多數人知曉,經過分類編目的,程式碼設計的總結,也可以說是前人的智慧結晶。學習設計模式能讓我們對一些應用場景使用相同的套路達到很好的效果,我會不定時更新一些自己對設計模式的理解的文章,從定義,實現,應用場景來說說設計模式,今天我要說的物件是工廠模式一:定義什麼是工廠?工廠模式是我們最常

設計模式工廠模式

意圖:定義一個建立物件的介面,讓其子類自己決定例項化哪一個工廠類,工廠模式使其建立過程延遲到子類進行。 主要解決:主要解決介面選擇的問題。 以下我們以一個汽車工廠為例子。 步驟 1 建立一個介面:汽車的介面 Car.java public interface Car {

設計模式工廠模式

(一)學習spring中的工廠模式是如何具體來利用工廠模式的 先來看一下基礎知識 簡單工廠模式又叫靜態方法模式 一個抽象產品類,可以派生出多個具體產品類。一個具體工廠類,通過往此工廠的static方

Java程式設計師從笨鳥到菜鳥23種設計模式工廠模式

設計模式的六大原則 開閉原則是最基礎的設計原則,其它的五個設計原則都是開閉原則的具體形態,依照java的語言的稱謂,開閉原則是抽象類,其它的五個原則是具體實現類 開閉原則:軟體實體應當對外擴充套件開放,對修改關閉,通俗點說就是應該在不修改原有程式碼的

Java設計模式工廠模式:抽象工廠模式

mar 模式 blank http left taxi ref www. app 2碳依5FVL冒傲3http://t.docin.com/etw488 am懦7鈉N山段9慌Q闌http://shequ.docin.com/ipu5657 iK1諾5N鍛認EUK剖嘲肆h

設計模式工廠模式工廠方法模式、簡單工廠模式、抽象工廠模式

工廠模式 工廠模式是最常用的設計模式之一,這種型別的設計模式屬於建立設計模式,它提供了一種建立物件的最佳方式。 優點:1、一個呼叫者想建立一個物件,只要知道其名稱就可以了。 2、擴充套件性高,如果想要增加多一個產品,只要擴充套件一個工廠類就可以了。 3、隱蔽產品的具體實現,呼叫者只要關係產品的介面。 程

設計模式工廠模式---物件的例項化部分提取出來---種不同的提取方法

一、不使用工廠 披薩專案:要方便披薩品種的擴充套件、要便於維護、要能執行時擴充套件 披薩族的設計: 抽象Pizza類,有四個方法:prepare()、bake(),cut(),box() 實際的披薩:GreekPizza和CheesePizza 披薩工廠設計:

設計模式工廠方法模式java

1、概念 工廠方法模式(FACTORY METHOD)是一種常用的物件建立型設計模式,此模式的核心精神是封裝類中不變的部分,提取其中個性化善變的部分為獨立類,通過依賴注入以達到解耦、複用和方便後期維護拓展的目的。它的核心結構有四個角色,分別是抽象工廠;具體工廠;抽象產品;

《大話設計模式》Java程式碼示例十一抽象工廠模式

抽象工廠模式(Abstract Factory):提供一個建立一系列相關或相互依賴物件的介面,而無需指定它們具體的類。 package abstractfactory; /** * 抽象工廠方法(Abstract Factory) * 使用者實體類 */ p

iOS 設計模式工廠方法模式FactoryMethod

工廠方法模式克服了簡單工廠模式違背開放-封閉原則的缺點,保持了封裝物件建立過程的優點。 要更換物件時,無論用簡單工廠模式還是工廠方法模式,都可以不用做大的改動,就可以實現,降低樂樂客戶程式與產品物件的耦合。 工廠方法模式是簡單工廠模式的進一步抽象和推廣,缺點

程式碼設計模式工廠方法模式Factory Method

特點: 工廠方法是粒度很小的設計模式,因為模式的表現只是一個抽象的方法。提前定義用於建立物件的介面,讓子類決定例項化具體的某一個類,即在工廠和產品中間增加介面,工廠不再負責產品的建立,由介面針對不同條件返回具體的類例項,由具體類例項去實現。工廠方法模式是簡單工廠模式的衍生,

萬能遊戲框架——設計模式工廠模式

設計模式 一、工廠模式:所有的物件的創造,都有一個物件去創造 1.一個簡單的工廠模式的例子 public class Food { public virtual void ShowMe(

Head First 設計模式工廠模式Factory Pattern

前言:     除了使用new操作符之外,還有更多製造物件的方法。你將瞭解到例項化這個活動不應該總是公開的進行,也會意識到初始化會造成“耦合”的問題。工廠模式將會從複雜的依賴中幫你脫困。1.   簡單的工廠當看到“new”,就會想到“具體”,的確也是在例項化一個具體的類,而不

設計模式工廠模式Factory在Android中的應用

1.工廠模式也是我們最常見的一種模式了,可以用來建立多個不同的例項物件。Android程式碼中最常見的應該是對Fragment的集中管理了。用Fragment工廠,創建出不同的fragment。 2.eg: 現在的app大多數都是由少數幾個activity和眾