前言
簡單工廠模式根據提供的資料或者引數返回幾個可能的類中的乙個例項,說通俗點有點像物件導向程式設計中的多型性,乙個基類,有多個派生類,在另外的呼叫程式中,根據引數來決定返回這個基類的哪個具體的派生類,返回值為基類型別,因為基類的引用可以指向派生類物件,而且這些所有的派生類都包含有基類的函式,也就是說派生類中有相同的函式,但是函式的實現可能不同。
下面我只是來演示一下簡單工廠模式,**不會太複雜。所以大家可以使用submile text工具。
簡單工廠模式
假定a是乙個基類,ab和ac都是派生於a的派生類,xfactory類中根據提供給它的引數來決定返回ab或者ac 類的哪乙個,返回的是哪個類的例項對於程式設計者來說並不是那麼重要,因為這些類有著相同的方法,程式設計者需要做的就是通過基類引用直接呼叫方法,不用去關心到底返回的是哪個派生類,因為這些類有相同的方法,只是實現不同而已。如何決定返回哪乙個派生類,取決於工廠的設計,該方法可以是非常複雜的函式,也可以是簡單的函式。
接下來我們就通過簡單加減乘除的計算器來了解和實現簡單工廠模式。
第一步:根據上面的小例子首先我來建立乙個基類a
///第二步:然後建立派生類ab ac即加、減、乘、除四個派生類。operation運算類
public
class
operation
public
double numberb
public
virtual
double
getresult()
}
///第三步:建立xfactory來返回ab、ac。加減乘除類
///加法類
public
class
operationadd : operation
}///減法類
public
class
operationsub : operation
}//////
乘法類
/// public
class
operationmul : operation
}//////
除法類
/// public
class
operationdiv : operation
result = this.numbera / this
.numberb;
return
result;}}
///第四步:先來乙個加法的呼叫:簡單工廠類
public
class
operationfactory
return
oper;}}
static執行結果為void main(string
args)
",oper.getresult());
console.readline();
}
總結在此簡單工廠模式,其實使用了物件導向中的幾點程式設計思想。
建立operation其實是對業務的封裝。
然後實現加減乘除類都繼承operation並重寫各自應有的業務邏輯。
我們如果再加乙個演算法開根(sqrt)演算法,那麼只需要新增加乙個繼承operation的類,然後在簡單工廠類中新增乙個分支即可。這裡我們發現這是易擴充套件(松耦合)、易維護。
設計模式之二 簡單工廠
最近這幾天把之前學到的設計模式寫個總結,現在先寫個簡單工廠模式 先看下uml圖吧 從uml圖中我們可以看出,phonefactory呼叫getphone方法去產生對應的phone物件 然我們看看 吧 package edu.fjnu.cs.hwb.esayfactory 定義個phone介面 pub...
工廠模式之二 工廠模式 彌補簡單工廠模式弊端
首先回顧下簡單工廠模式的主要內容 簡單工廠模式就是實質就是專門定義了乙個工廠類,利用工廠類的靜態方法來根據使用者需求建立物件,優點是客戶端的壓力較小,客戶端不需要做建立例項的操作,只需要呼叫工廠類中的方法就可以獲得對應例項,而其缺點也非常明顯,其所有建立工作都在乙個工廠類完成,耦合性較高,而且當系統...
java設計模式之二工廠模式
工廠模式主要用一下幾種形態 1 簡單工廠 factory 2 工廠方法 factory method 3 抽象工廠 abstract factory 又叫靜態工廠,是工廠模式三中狀態中結構最為簡單的。主要有乙個靜態方法,用來接受引數,並根據引數來決定返回實現同一介面的不同類的例項。我們來看乙個具體的...