- 主要思想:
public static Operation CreateFactory(string ope)
??????? {
??????????? //實例化空父類,讓父類指向子類
??????????? Operation op = null;
??????????? switch (ope)
??????????? {
??????????????? case "+":
??????????????????? op = new OperationAdd();//父類指向OperationAdd這個子類,并調用子類中的加法
??????????????????? break;
??????????????? case "-":
??????????????????? op = new OperationSub();//父類指向OperationSub這個子類,并調用子類中的減法
??????????????????? break;
??????????? }
??????????? return op;
??????? }
?
- 相關源碼:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace FactoryModel 8 { 9 //====================使用C#,利用簡單工廠模式,實現簡單的計算器功能==================== 10 //考察時知識點:面向對象三大特性——繼承、封裝、多態 11 /// <summary> 12 /// 1.定義父類,同時也是一個封裝 13 /// </summary> 14 class Operation 15 { 16 //2.因為要讓子類能夠對父類進行訪問,故應要將參數定義為受保護的變量類型 17 protected int numberA; 18 protected int numberB; 19 //定義屬性(必寫) 20 public int NumberA 21 { 22 get { return numberA; } 23 set { numberA = value; } 24 } 25 public int NumberB 26 { 27 get { return numberB; } 28 set { numberB = value; } 29 } 30 //3.封裝虛方法,以供子類進行重寫 31 public virtual int getResule() 32 { 33 int result = 0; 34 return result; 35 } 36 } 37 /// <summary> 38 /// 4.定義子類,繼承父類,并對父類進行重寫(加法) 39 /// </summary> 40 class OperationAdd : Operation 41 { 42 public override int getResule() 43 { 44 return numberA + numberB; 45 } 46 } 47 //5.定義子類,繼承父類,并對父類進行重寫(減法) 48 class OperationSub : Operation 49 { 50 public override int getResule() 51 { 52 return numberA - numberB; 53 } 54 } 55 //6.創建簡單工廠模式 56 class Factory 57 { 58 /// <summary> 59 /// 封裝返回值類型為上面“父類型”——Operation類型的方法 60 /// </summary> 61 /// <param name="ope">ope是指運算的類型,如+、-、*、/</param> 62 /// <returns></returns> 63 public static Operation CreateFactory(string ope) 64 { 65 //實例化空父類,讓父類指向子類 66 Operation op = null; 67 switch (ope) 68 { 69 case "+": 70 op = new OperationAdd();//父類指向OperationAdd這個子類,并調用子類中的加法 71 break; 72 case "-": 73 op = new OperationSub();//父類指向OperationSub這個子類,并調用子類中的減法 74 break; 75 } 76 return op; 77 } 78 } 79 //7.主函數中進行調用 80 class Program 81 { 82 static void Main(string[] args) 83 { 84 //要用哪種運算,只需將參數傳入工廠中的方法中,工廠將會自動調用相關的方法, 85 //即(父類指向相應的子類,從而調用相應的方法),進行相應的運算 86 Operation op = Factory.CreateFactory("+"); 87 op.NumberA = 10; 88 op.NumberB = 30; 89 //調用父類中的方法來獲取結果 90 int result = op.getResule(); 91 Console.WriteLine(result); 92 Console.ReadKey(); 93 } 94 //如果在后續的編程中仍需要有其他的運算,則只需要在子類中加上相應的子類, 95 //并在工廠中加上相應的case情況即可,這也就是簡單工廠的“利”所在 96 } 97 }
?