設計模式學習筆記(四) 簡單工廠模式

2021-10-08 02:11:48 字數 2271 閱讀 5908

2 典型實現

3 例項

4 簡化

5 主要優點

6 主要缺點

7 適用場景

8 總結

簡單工廠模式不屬於gof23種設計模式之一,但是實際中用途廣泛,並且可以作為學習「工廠方法模式」以及「抽象工廠模式」的基礎。在簡單工廠模式中,工廠類提供乙個建立產品的工廠方法,用於建立各種產品。客戶端只需傳入對應的引數,利用該方法即可根據傳入引數的不同返回不同的具體產品物件。

簡單工廠模式(****** factory pattern):定義乙個工廠類,它可以根據引數的不同返回不同類的例項,被建立的例項通常都具有共同的父類。

因為在簡單工廠模式用於建立例項的方法是靜態的方法,因此簡單工廠模式又被稱為靜態工廠方法模式,它屬於類建立型模式。

簡單定義如下:

inte***ce

product

實現抽象產品角色介面:

class

concreteproducta

implements

product

}class

concreteproductb

implements

product

}

由於工廠角色需要根據傳入引數不同返回不同的具體產品,因此通常使用列舉作為傳入引數,先定義具體產品的列舉類:

enum concreteproduct

接著定義靜態工廠方法:

class

factory

}}

根據引數的不同建立不同的具體產品例項並返回。

傳入不同引數即可獲取不同的具體產品:

product product = factory.

get(concreteproduct.a)

;product.

method()

;product = factory.

get(concreteproduct.b)

;product.

method()

;

某公司需要開發乙個圖表庫,該圖表庫可以提供各種不同外觀的圖表,例如柱狀圖,折線圖等等,使用簡單工廠模式對其進行設計。

設計如下:

**如下:

//抽象產品類

inte***ce

chart

//具體產品類,柱狀圖

class

histogramchart

implements

chart

public

void

display()

}//具體產品類,餅狀圖

class

piechart

implements

chart

public

void

display()

}//具體產品類,折線圖

class

linechart

implements

chart

public

void

display()

}//工廠類

class

factory}}

enum charts

測試:

public

static

void

main

(string[

] args)

為了簡化設計,可以將抽象產品類與工廠類合併,將靜態方法移至抽象產品類中:

這樣可以通過抽象產品類的靜態方法獲取子類物件,優化**如下:

設計模式(四) 工廠模式 簡單工廠

概述 簡單工廠其實不是乙個設計模式,反而像一種程式設計習慣。但由於經常被使用,所以人民經常把它放到工廠模式裡面。定義 簡單工廠模式是由乙個工廠物件決定建立出哪一種產品類的例項。實現 抽象類 產品 public abstract class product 具體的產品 public class con...

設計模式 簡單工廠模式(學習筆記)

簡單工廠事實上不是乙個設計模式,比較像一種程式設計習慣!首先看一下 從 中理解這個程式設計習慣。舉個做披薩的樣例 pizza類 public inte ce pizza詳細的披薩cheesepizza public class cheesepizza implements pizza overrid...

設計模式 學習筆記 簡單工廠模式

從接觸程式設計到現在已經很久了,從最早的面向過程到物件導向,後來演算法的學習,但是一直沒有接觸設計模式。前幾周,我申請的 大話設計模式 採購下來了,剛好藉著這個讀書的機會,把自己的學習筆記記錄下來,希望以後自己寫專案的時候可以應用到這些模式思想。1 運算的基類,所有的運算都必須繼承自這個類 基類,所...