日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

工厂方法模式--实现计算器

發布時間:2024/1/1 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 工厂方法模式--实现计算器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言:工廠方法模式名字上和前面第一個模式差不多,那就是簡單工廠。其實這個計算器的例子,在前面使用簡單工廠實現了一遍了。這次只是和使用相同的例子和工廠方法模式進行對比。在實現工廠方法模式的過程中發現了這個模式的優缺點!

優點:是每一個類或者功能的獨立性非常好。實現了可擴展,而不用修改其他的類。

缺點:每增加一個產品就需要增加一個產品工廠的類。

目錄

類圖:

代碼:

? ? ? form窗體:

運算:

? ? ? 類:

? ? ? 運算類

? ? ?工廠方法:

結果:


類圖:

代碼:

? ? ? form窗體:

//窗體通用聲明Operation oper =new Operation();//實例化運算類double result = 0;//結果//給按鈕賦值string NumberA = "";string NumberB = "";//區分AB的賦值標簽,如果是fals就給A賦值。//否則給B賦值。bool flage = false; //數字按鈕 private void button1_Click(object sender, EventArgs e){//判斷賦值對象if (flage){NumberB += 1;textBox1.Text = NumberB;}else{NumberA += 1;textBox1.Text = NumberA;}} //每一個數字按鈕的代碼,幾乎一摸一樣。除了代表的數字之外, //其他的代碼完全一樣。所以就以1這個數字按鈕為例就可以了。在這就不一一列舉了!

運算:

private void button12_Click(object sender, EventArgs e){flage = true;//更改賦值標簽//判斷是否計算IFactory operFactory = new AddFactory();//實例化加法工廠oper = operFactory.CreateOperation();//創建加法運算 } private void button11_Click(object sender, EventArgs e){flage = true;//更改賦值標簽IFactory operFactory = new SubFactory();oper = operFactory.CreateOperation();} private void button14_Click(object sender, EventArgs e){flage = true;//更改賦值標簽IFactory opertFactory = new MulFactory();oper = opertFactory.CreateOperation();}

private void button14_Click(object sender, EventArgs e){flage = true;//更改賦值標簽IFactory opertFactory = new MulFactory();oper = opertFactory.CreateOperation();}

private void button10_Click(object sender, EventArgs e){//通過屬性,給A和B賦值。oper.NumberA = double.Parse(NumberA);oper.NumberB = double.Parse(NumberB);//計算結果result = oper.GetResult();//顯示結果textBox1.Text = result.ToString();}

? ? ? 類:

? ? ? 運算類

? ? ??

namespace 計算器 {/// <summary>/// 運算類/// </summary>public class Operation{//兩個數private double _numberA = 0;private double _numberB = 0;/// <summary>/// 第一個數/// </summary>public double NumberA{get { return _numberA; }set { _numberA = value; }}/// <summary>/// 第二個數/// </summary>public double NumberB{get { return _numberB; }set { _numberB = value; }}/// <summary>/// 計算方法/// </summary>/// <returns></returns>public virtual double GetResult(){double result = 0;return result;}} }

namespace 計算器 {/// <summary>/// 加法類/// </summary>public class OperationAdd:Operation{/// <summary>/// 加法/// </summary>/// <returns>計算結果</returns>public override double GetResult(){double result = 0;result = NumberA + NumberB;return result;//返回結果}//end Getresult} }

namespace 計算器 {/// <summary>/// 乘法類/// </summary> public class OperationMul:Operation{/// <summary>/// 乘法/// </summary>/// <returns>結果</returns>public override double GetResult(){double result = 0;result = NumberA * NumberB;return result;}//end GetResult} }

namespace 計算器 { public class OpertionDiv:Operation{public override double GetResult(){double result = 0;if (NumberB==0){result = 0;}else{result = NumberA / NumberB;}//end ifreturn result;}//end GetResult} }

namespace 計算器 {/// <summary>/// 減法/// </summary>public class OperationSub:Operation{public override double GetResult(){double result = 0;result = NumberA - NumberB;return result;}//end GetResult} }

? ? ?工廠方法:

namespace 計算器 {//工廠接口public interface IFactory{Operation CreateOperation();//創建具體運算} } namespace 計算器 {public class SubFactory:IFactory{public Operation CreateOperation(){return new OperationSub();//減法}} }

namespace 計算器 {/// <summary>/// 加法工廠/// </summary>public class AddFactory:IFactory{/// <summary>/// 創建加法運算/// </summary>/// <returns></returns>public Operation CreateOperation(){return new OperationAdd();//實例化加法類}} } namespace 計算器 {public class MulFactory:IFactory{public Operation CreateOperation(){return new OperationMul();//乘法}} } namespace 計算器 { public class DivFactory:IFactory{public Operation CreateOperation(){return new OpertionDiv();//除法}} }

結果:

總結

以上是生活随笔為你收集整理的工厂方法模式--实现计算器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。