static void Main(string[] args) { try { Console.Write("请输入数字A:"); string strNumberA = Console.ReadLine(); Console.Write("请选择运算符号(+、-、*、/):"); string strOperate = Console.ReadLine(); Console.Write("请输入数字B:"); string strNumberB = Console.ReadLine(); string strResult = ""; Operation oper = OperationFactory.CreateOperate(strOperate); oper.NumberA = Convert.ToDouble(strNumberA); oper.NumberB = Convert.ToDouble(strNumberB); strResult = oper.GetResult().ToString(); Console.WriteLine("结果是:" + strResult); Console.ReadLine(); } catch (Exception ex) { Console.WriteLine("您的输入有错:" + ex.Message); } }
static void Main(string[] args) { //简单工厂 案例:计算器 var oper = OperationFactory.CreateOperate("+"); oper.NumberA = 1; oper.NumberB = 2; var result = oper.GetResult(); Console.WriteLine(result); Console.ReadKey(); }
static void Main(string[] args) { //Operation作为一个父类,也相当于一个接口,子类去实现他们的共同功能 //然后通过简单工厂来生产出不同的产品。最后通过得到的产品去调用他们的行为方法 Operation oper; oper = OperationFactory.CreateOperate("+"); oper.NumberA = 3; oper.NumberB = 4; Console.WriteLine(oper.GetResult()); //UML简介 //1.在UML中,【+】代表着public,【-】代表着prvite,【#】代表着protend //2.如果A类继承了B类我们用【空心的三角形+实线】表示 //3.如果A类实现了接口,则我们用【空心的三角形+虚线】来表示 //4.如果我们在A类中需要"知道"另外的一个类时我们就用关联,关联的关系我们用【实线箭头】来表示 //5.聚合关系:表示一种弱的引用关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分(大雁-雁群),他们的生命周期不一样【空心的菱形+实线箭头来表示】 //6.合成【组合】关系:是一种强的"拥有关系",体现了严格的部分和整体的关系,整体和部分的生命周期一样。(鸟-翅膀)【实心的菱形+实线箭头】来表示。 }
static void Main(string[] args) { Operation oper; oper = OperationFactory.CreateOperate("+"); oper.NumberA = 4; oper.NumberB = 2; double result = oper.GetResult(); Console.WriteLine(result); oper = OperationFactory.CreateOperate("-"); oper.NumberA = 4; oper.NumberB = 2; result = oper.GetResult(); Console.WriteLine(result); oper = OperationFactory.CreateOperate("/"); oper.NumberA = 4; oper.NumberB = 2; result = oper.GetResult(); Console.WriteLine(result); Console.ReadKey(); }
static void Main(string[] args) { // 情境:當我有一個計算機程式 該如何以物件導向寫出來? /* * 1. 每次都會有兩個數字需要計算 * 2. 有運算元 [+、-、*、/] * 3. 根據不同運算元產生實體,原本為一整個class進行switch,但是這樣耦合性過高,所以拆分成4個class將相同事情封裝到介面再個別實現 * 4. 讓運算類別關聯簡單工廠類別,若以後需要增加需求只需要到工廠類別進行修改,使用者只需要創建實體並不需要理會內部怎麼操作。 * */ // 優點: 使用者不需要明確知道怎麼創建,只需要call CreateXXX(),甚至可以配合組態檔參數進行設定 // 缺點: 當 Facotry 需要增加新的 Product 時,必然需要對 Factory 的程式碼進行變更。 Operation op = OperationFactory.CreateOperate(Operater.Add); op.Number1 = 1; op.Number2 = 2; var result = op.GetResult(); Console.WriteLine(result); Console.Read(); }