這片部落格我將以乙個計算器的例子跟大家分享一下我對簡單工廠模式和工廠方法模式的理解。
計算器中的基本運算有 加、減、乘、除四個。
首先定義乙個運算類,類中有numa和numb這兩個需要運算的變數,有乙個getresult方法用於獲取運算結果。
public class operation }
其次,定義加、減、乘、除四個實現類分別繼承運算類operation,並重寫operation中的getresult方法。
public class operationadd extends operation
public class operationsub extends operation
public class operationmul extends operation
public class operationdiv extends operation
簡單工廠模式的實現方式:
需要定義乙個簡單工廠類operationfactory,在工廠類中進行switch分支的判斷。
class operationfactory
return oper; }
}客戶端呼叫如下:
operation oper = operationfactory.createoperate("+");
oper.numa = 1;
oper.numb = 2;
double result = opper.getresult();
簡單工廠方法被pass掉了,那麼一定就會有乙個新的方法取代他,這個方法就是偉大的工廠方法模式。我們試著用工廠方法模式再一次對加減乘除運算進行編碼。
工廠方法模式的實現方式:
前面的operation運算類和加、減、乘、除這四個實現類依然不動。我們建立乙個工廠介面。
inte***ce ifactory
然後分別建立加、減、乘、除四個工廠類實現上面的工廠介面。
class addfactory implements ifactory }
class subfactory implements ifactory }
class mulfactory implements ifactory }
class divfactory implements ifactory }
客戶端呼叫**:
ifactory ope***ctory = new addfactory();
operation oper = ope***ctory.createoperation();
oper.numa = 1;
oper.numb = 2;
double result = oper.getresult();
最後,還有乙個答疑解惑的過程差點遺漏,可能有的小盆宇會問,工廠方法模式,在工廠類中實現了加減乘除的運算類,然後呼叫工廠類,那麼我們為什麼不可以直接呼叫加減乘除的運算類呢?
簡單工廠模式VS工廠方法模式
這兩天在看 大話設計模式 這本書很有意思,容易讓人理解,但是看久了,設計模式種類看多了,也會容易混,容易記不清楚,所以我們應該過一段時間停下腳步,總結一下。幫助我們理解,記憶。常常駐足進行總結,顆粒歸倉才是我們的收穫。最近看到了簡單工廠模式和工廠方法模式,從名字上看這麼的相似,越相似月不容易找到他們...
簡單工廠模式VS工廠方法模式
前面學習了簡單工廠模式,理解的不是很深刻,今天剛好看到了工廠方法模式,比較一下也加深對前面的理解。首先無論是簡單工廠模式還是工廠方法模式都是把不變的地方提取出來,把容易發生變化的封裝起來。以達到做大程度的復用,和適應使用者的變動,以及專案的擴充套件。又稱為靜態工廠模式,它專門定義乙個類來負責建立其他...
工廠方法模式VS簡單工廠
通過聯絡實際,我們利用乙個學雷鋒做好事的例子,來體會工廠方法模式和簡單工廠的區別與聯絡。1 寫乙個雷鋒類,學生繼承於雷鋒,通過例項化多個物件去完成洗衣 打掃等方法。2 但是學生都是短期的,如若我們需要增加乙個長時間為老人服務的團體 社群志願者類,同樣繼承於雷鋒。再寫出簡單工廠類,運用多型,需要社群志...