前言
簡單工廠模式是《大話設計模式》中的第乙個模式,又叫做靜態工廠方法(static factory method)模式,它不屬於23種gof設計模式之一。簡單工廠模式是由乙個工廠物件決定建立出哪一種產品類的例項。簡單工廠模式是工廠模式家族中最簡單實用的模式,可以理解為是不同工廠模式的乙個特殊實現。也就是說,乙個程式中,到式底要例項化誰,將來會不會增加例項化的物件,增加一些容易變化的地方,應該考慮用乙個單獨的類來做這個創造例項的過程,這就是工廠。
內容
業務的封裝就是將業務邏輯和介面邏輯分開,減低它們之間的耦合度,這樣可以達到容易維護或擴充套件。
封裝後**:
catch (exception ex)}}
public class operation
return result;
}}}
上面**很漂亮,但並不是最優的。若是想再加乙個運算類直接改operation類就可以了,但是若新的運算類需要呼叫加減乘除方法就不好改了。所以應該把加減乘數等運算類分離。
分離後**:
public class operation
set
}public double numberb
set
}public virtual double getresult()
}//加法類,繼承運算類
class operationadd : operation
}//減法類,繼承運算類
class operationsub : operation
}//乘法類
class operationmul : operation
}//除法類
class operationdiv : operation
result = numbera / numberb;
return result;}}
}
上面
**有兩個number屬性,主要用於計算器的前後數,然後有乙個虛方法getresult(),用於得到的結果,然後把加減乘數攜程運算類的子類,繼承它後重寫了getresult()方法,這樣若修改任何乙個演算法,就不需要提供其他演算法的**了。但是如何讓計算器知道希望呼叫的是哪乙個演算法呢?
這個時候就需要用到簡單工廠模式了。
客戶端**:
static void main(string args)
上面**有兩個number屬性,主要用於計算器的前後數,然後有乙個虛方法getresult(),用於得到的結果,然後把加減乘數攜程運算類的子類,繼承它後重寫了getresult()方法,這樣若修改運算類**:
public class operationfactory
return oper;
}}
這樣只需要輸入運算符號,工廠就可以例項化出合適的物件,通過多型,返回父類的方式實現了計算器的結果。
不管是控制台程式、windows程式,web程式,pda或者手機程式,都可以用這段**實現計算器的功能,若果需要更改某運算,只需更改某運算的類就好了,需要增加各種複雜運算時,只需增加相應的子類就可以了。
當然,修改介面直接修改就好了,和程式**沒有關係。
總結
通過簡單工廠模式讓我徹底的認識到之前寫**的不足,若是不懂這些東西,修改程式(增加或者修改模組)大都需要全部推翻重來。物件導向原來這麼神奇,讓我領略到了程式設計的思想。
就像書上說的:「程式設計是一門技術,更加是一門藝術。」
設計模式 工廠模式(簡單工廠)
一 簡單工廠 定義 簡單工廠模式 factory pattern 屬於類的創新型模式,又叫靜態工廠方法模式 static factorymethod pattern 是通過專門定義乙個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。特點 工廠類直接實現,乙個產品介面,乙個工廠類可以產生多...
設計模式(簡單工廠模式 工廠模式 抽象工廠模式)
當邏輯較為簡單時,可以直接建立對應的類。如下 include using namespace std class class banana class pear intmain 通過此 可以發現,使用者直接與客戶接觸,違背了dip 依賴倒轉 原則,過於麻煩,所以引出簡單工廠模式。include us...
設計模式 簡單工廠設計模式
請用任意一種物件導向語言實現計算器控制台程式,要求輸入兩個數和運算符號,得到結果。operation運算類 public class operation set public double numberb set public virtual double getresult 加減乘除類 using...