Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        static void Main(string[] args)
        {
            //简单工厂 案例:计算器
            var oper = OperationFactory.CreateOperate("+");

            oper.NumberA = 1;
            oper.NumberB = 2;
            var result = oper.GetResult();

            Console.WriteLine(result);
            Console.ReadKey();
        }
Beispiel #3
0
        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.合成【组合】关系:是一种强的"拥有关系",体现了严格的部分和整体的关系,整体和部分的生命周期一样。(鸟-翅膀)【实心的菱形+实线箭头】来表示。
        }
Beispiel #4
0
        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();
        }