工廠模式之一 簡單工廠模式

2021-08-26 23:58:16 字數 2438 閱讀 7041

在物件導向程式設計中,產生乙個物件例項最常用的方法是使用new關鍵字來建立,但這樣耦合度太高,如果建立此物件時,需要一些其他的操作,這些**(建立物件和一些其他的操作)如果沒有封裝起來給客戶端使用,客戶端大量使用這些**,一旦這些重複的操作需要更改,那麼帶來的工作量將是巨大的,也不利於擴充套件。所以我們建立乙個工廠類來建立物件,讓客戶端只關注得到工廠生產的物件,而將生產物件的一系列操作封裝起來,方便日後對生產物件的**進行擴充套件和維護。

工廠模式可以分為三類:

1)簡單工廠模式

2)工廠方法模式

3)抽象工廠模式

定義:乙個工廠類,可以根據引數的不同返回不同類的例項,被建立的例項通常有共同的父類

簡單工廠模式只需要乙個工廠類。簡答工廠模式:又被稱為靜態工廠模式,工廠類為靜態類或者包含靜態方法。不屬於23種gof設計模式。實質是由乙個工廠類根據傳入的引數,動態決定應該建立哪乙個產品例項。

結構圖:

client:客戶端

factory:工廠類,提供乙個工廠類用於建立各種產品。在工廠類中提供乙個建立產品的工廠方法,該方法可以根據所傳入引數的不同建立不同的具體產品物件。

product:抽象產品類。

concrete:具體產品類。

簡單工廠模式的優點

工廠類中包含了必要的邏輯判斷,根據客戶端的選擇動態例項化相關的類,對於客戶端來說,去除了具體的產品依賴。

簡單工廠模式的缺點

工廠類集中了所有產品的建立邏輯,職責過重。一旦需要新增新的concreteproduct,則需要修改factory邏輯,這樣違反了開放-關閉原則。

例項:

實現乙個計算器程式,要求輸入兩個數和運算符號,得到結果。

思路:

具體的實現:

operationfactory類:

把原本在客戶端的判斷,放到了工廠類中,客戶端只需要傳遞條件便可以得到對應的產品,同時也去除了客戶端和具體產品的依賴。客戶端只需要和工廠類和抽象產品類互動。(客戶端無須知道所建立的具體產品類的類名,只需要知道具體產品類所對應的引數即可,對於一些複雜的類名,通過簡單工廠模式可以減少使用者的記憶量)

public

class operationfactory

return operation;}}

operation類:

public

abstract

class operation

public

void

setnumbera(double numbera)

public

double

getnumberb()

public

void

setnumberb(double numberb)

public

abstract

double

getresult();

}

加法類operationadd類:

public

class

operationadd

extends

operation

}

減法類operationsub類:

public

class

operationsub

extends

operation

}

乘法類optionsub類:

public

class

operationmul

extends

operation

}

除法類optiondiv類:

public

class

operationdiv

extends

operation catch (exception e)

}double result = numbera/numberb;

return result;}}

客戶端**:

public

class client

}

客戶端需要知道的類簡單工廠類(operationfactory)、產品抽象類(operation);

java設計模式之一 簡單工廠模式

從設計模型的型別來講,簡單的工廠模式屬於建立型模式,又叫靜態工廠方法模式,簡單的工廠模式是由乙個工廠物件決定建立出哪一種產品類的例項。簡單工廠模式的實質是由工廠類根據傳入的引數,動態決定應該建立哪種產品類 這些產品類繼承自乙個父類或實現乙個介面 的例項。工廠 creator 角色 簡單工廠模式的核心...

工廠設計模式一 簡單工廠模式

工廠設計模式實現了建立者和呼叫者的分離。類別 1.簡單工廠模式 2.工廠方法模式 3.抽象工廠模式 遵循的設計原則 1.ocp 開閉原則,open closed principle 乙個軟體的實體應當那個對擴充套件開放,對修改關閉 2.dip 依賴倒置原則,dependence inversion ...

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

工廠設計模式可分為 簡單工廠模式 工廠方法模式 抽象工廠模式 第一篇我們來聊聊 理解 假設某些例項具有相同的方法,可以根據引數的不同返回不同的例項,被建立的例項通常都具有共同的父類,那麼可以考慮使用簡單設計模式來實現。例如可以實用簡單工廠模式設計乙個可以建立不同幾何形狀 如圓形 方形和三角形等 的繪...