1. 程式人生 > >簡單工廠模式---計算器

簡單工廠模式---計算器

利用 個數 代碼 oid 運算 console col () 程序

一只站在樹上的鳥兒,從來不會害怕”樹枝”會斷裂,因為它相信的不是樹枝,而是自己的翅膀。與其每天擔心未來,不如努力做好現在。因為,成功的路上,只有奮鬥才能給你最大的安全感。

今天寫了一個利用面向對象三大特性(封裝,繼承,多態)以及設計模式實現的計算器程序,使用面向對象特性使代碼易維護,易擴展,使用設計模式可以使程序更加靈活,並且易於復用

具體實現代碼:

先定義一個運算類

 1    //運算類
 2    public abstract class Operation
 3     {
 4         private double numberA;
 5 
 6         public
abstract double GetResult(); 7 8 public double NumberA 9 { 10 get { return numberA; } 11 set { numberA = value; } 12 } 13 private double numberB; 14 15 public double NumberB 16 { 17 get { return numberB; } 18 set
{ numberB = value; } 19 } 20 21 22 }

加減乘除類繼承運算類

 1 //加法類
 2    public class OperationAdd:Operation
 3     {
 4        public override double GetResult()
 5        {
 6            double result = 0;
 7            result=this.NumberA + this.NumberB;
 8            return result;
 9
} 10 } 11 12 13 //減法類 14 public class OperationSub:Operation 15 { 16 public override double GetResult() 17 { 18 double result = 0; 19 result = this.NumberA - this.NumberB; 20 return result; 21 } 22 } 23 24 25 //乘法類 26 public class OperationMul:Operation 27 { 28 public override double GetResult() 29 { 30 double result = 0; 31 result = this.NumberA * this.NumberB; 32 return result; 33 } 34 } 35 36 37 //除法類 38 public class OperationDiv:Operation 39 { 40 public override double GetResult() 41 { 42 double result = 0; 43 //判斷用戶輸入的除數是非為0 44 if(this.NumberB==0) 45 { 46 //拋出異常,提示用戶除數不能為0 47 throw new Exception("除數不能為0!!!"); 48 } 49 result = this.NumberA /this.NumberB; 50 return result; 51 } 52 }

工廠類

 1 //簡單工廠
 2    public class OperationFactory
 3     {
 4        //傳入什麽符號就實例化那個方法對象
 5        public static Operation createOperate(string operate) 
 6        {
 7            Operation ot = null;
 8            switch(operate)
 9            {
10                case "+":
11                    ot = new OperationAdd();
12                    break;
13                case "-":
14                    ot = new OperationSub();
15                    break;
16                case "*":
17                    ot = new OperationMul();
18                    break;
19                case "/":
20                    ot = new OperationDiv();
21                    break;
22                default:
23                    Console.WriteLine("請輸入正確符號:");
24                    break;
25            }
26            return ot;
27        }
28     }

客戶端(Main方法)

 1         static void Main(string[] args)
 2         {
 3             Console.WriteLine("請輸入第一個數:");
 4             double numA =Convert.ToDouble(Console.ReadLine());
 5             Console.WriteLine("請輸入第二個數:");
 6             double numB = Convert.ToDouble(Console.ReadLine());
 7             Console.WriteLine("請輸入運算符號:");
 8             string operate = Console.ReadLine();
 9             Operation ot = OperationFactory.createOperate(operate);
10             ot.NumberA = numA;
11             ot.NumberB = numB;
12             Console.WriteLine("結果為:"+ot.GetResult());
13             Console.ReadLine();
14         }

使用Java語言現實是大部分都是一樣的

希望對你有所幫助!!!

簡單工廠模式---計算器