• 简单工厂


            static void Main(string[] args)
            {
                try
                {
                    double numa = Convert.ToDouble(Console.ReadLine());
                    string oper = Console.ReadLine();
                    double numb = Convert.ToDouble(Console.ReadLine());
                    double result = 0;
                    switch (oper)
                    {
                        case "+":
                            result = numa + numb;
                            break;
                        case "-":
                            result = numa - numb;
                            break;
                        case "*":
                            result = numa * numb;
                            break;
                        case "/":
                            if (numb != 0)
                            {
                                result = numa / numb;
                            }
                            else
                            {
                                throw new Exception("除数不能为0");
                            }
                            break;
                        default:
                            break;
                    }
                    Console.WriteLine(result);
                    //var a = new System.Data.DataTable().Compute("1*2*3+5","");
                    //Console.WriteLine(a);
                    Console.ReadLine();
                }
                catch (Exception ex)
                {
                    Console.WriteLine("" + ex.Message);
                    Console.ReadLine();
                }
                /*
                 * 喝酒唱歌,人生真爽
                 * 对酒当歌,人生真爽
                 * 对酒当歌,人生几何
                 * */
                
                /*
                 * 可维护 可复用 可扩展 灵活性好
                 * 封装 继承 多态 耦合度降低
                 * */
                #region 
                /* 短歌行
                 * ⑴对酒当歌,人生几何:拿着酒唱歌,这样能有几回呢?
                    ⑵譬如朝露,去日苦多:就像早晨的露水,过去的日子太多。
                    ⑶慨当以慷,忧思难忘:应当慷慨高歌,心中的忧思难以忘怀。
                    ⑷何以解忧,唯有杜康:只有杜康酒可以解除我的忧思。
                    ⑸青青子衿,悠悠我心:衿:衣领;悠悠:长貌,形容思念之深。表示对贤才的思慕。
                    ⑹但为君故,沉吟至今:但:只;君:指所思慕的人;沉吟:指低吟《子衿》一诗。
                    ⑺呦呦鹿鸣,食野之苹:永《诗经.鹿鸣》成句,这里借来表示招纳贤才的意思。苹:艾蒿。
                    ⑻我有嘉宾,鼓瑟吹笙:我用鼓瑟来迎接贤才。
                    ⑼明明如月,何时可掇:明月是永不能摘掉的,它的运行也是永不能停止的。
                    ⑽忧从中来,不可断绝:我绵绵不断的忧愁就从这里来。
                    ⑾越陌度阡,枉用相存:越过田间的小路,问候远道而来的客人。
                    ⑿契阔谈宴,心念旧恩:久别重逢,宴饮谈心,诉说往日的情意。
                    ⒀月明星稀,乌鹊南飞:明月升起 ,星星闪烁,一群寻巢乌鹊向南飞去。
                    ⒁绕树三匝,何枝可依?乌鹊绕树飞了三周却没敛翅,哪里才有它们栖身之所?此二句比喻贤才多多益善。无依比喻贤士身无所托。
                    ⒂山不厌高,海不厌深:高山不辞土石才见巍峨,大海不弃涓流才见壮阔。比喻用人要“唯才是举”,多多益善。
                    ⒃周公吐哺,天下归心。只有像周公那样礼待贤才(周公见到贤才,吐出口中正在咀嚼的食物,马上接待。《史记》载周公自谓:“一沐三握发,一饭三吐哺,犹恐失天下之贤。”),才能使天下人心都归向我。篇末引用周公自比,说明求贤建业的心思[1]  。
                */
                #endregion
            }
    View Code
        class Operation
        {
            public static double GetResult(double numa,double numb,string operate)
            {
                double result = 0;
                switch (operate)
                {
                    case "+":
                        result = numa + numb;
                        break;
                    case "-":
                        result = numa - numb;
                        break;
                    case "*":
                        result = numa * numb;
                        break;
                    case "/":
                        if (numb==0)
                        {
                            throw new Exception("除数不能为0");
                        }
                        result = numa / numb;
                        break;
                    default:
                        break;
                }
                return result;
            }
        }
        class Program
        {
            static void Main(string[] args)
            {
                while (true)
                {
                    try
                    {
                        double numa = Convert.ToDouble(Console.ReadLine());
                        string operate = Console.ReadLine();
                        double numb = Convert.ToDouble(Console.ReadLine());
                        double result = Operation.GetResult(numa, numb, operate);
                        Console.WriteLine(result);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("" + ex.Message);
                    }
                    //Console.ReadLine();
                }
            }
        }
    View Code
    namespace ConsoleApplication3
    {
        class Operation
        {
            public double NumA { get; set; }
            public double NumB { get; set; }
            public virtual double GetResult()
            {
                double result = 0;
                return result;
            }
        }
    
        class OperationAdd : Operation
        {
            public override double GetResult()
            {
                double result = 0;
                result = NumA + NumB;
                return result;
            }
        }
    
        class OperationSub : Operation
        {
            public override double GetResult()
            {
                double result = 0;
                result = NumA - NumB;
                return result;
            }
        }
    
        class OperationMul : Operation
        {
            public override double GetResult()
            {
                double result = 0;
                result = NumA * NumB;
                return result;
            }
        }
    
        class OperationDiv : Operation
        {
            public override double GetResult()
            {
                double result = 0;
                if (NumB==0)
                {
                    throw new Exception("除数不能为0");
                }
                else
                {
                    result = NumA / NumB;
                }
                return result;
            }
        }
    
        class OperationFactory
        {
            public static Operation createOpearation(string operate)
            {
                Operation oper = null;
                switch (operate)
                {
                    case"+":
                        oper = new OperationAdd();
                        break;
                    case "-":
                        oper = new OperationSub();
                        break;
                    case "*":
                        oper = new OperationMul();
                        break;
                    case "/":
                        oper = new OperationDiv();
                        break;
                    default:
                        break;
                }
                return oper;
            }
        }
        class Program
        {
            static void Main(string[] args)
            {
                while (true)
                {
                    try
                    {
                        double numa = Convert.ToDouble(Console.ReadLine());
                        string operate = Console.ReadLine();
                        double numb = Convert.ToDouble(Console.ReadLine());
                        Operation oper=OperationFactory.createOpearation(operate);
                        oper.NumA = numa;
                        oper.NumB = numb;
                        double result = oper.GetResult();
                        Console.WriteLine(result);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                }
            }
        }
    }
    View Code
    namespace ClassLibrary1
    {
        public class Operation
        {
            public double NumA { get; set; }
            public double NumB { get; set; }
            public virtual double GetResult()
            {
                double result = 0;
                return result;
            }
    
            public static string checkNumberInput(string currentNumber,string inputString)
            {
                string result = "";
                if (inputString ==".")
                {
                    if (currentNumber.IndexOf(".")<0)
                    {
                        if (currentNumber.Length==0)
                        {
                            result = "0" + inputString;
                        }
                        else
                        {
                            result = currentNumber + inputString;
                        }
                    }
                }
                else if (currentNumber=="0")
                {
                    result = inputString;
                }
                else
                {
                    result = currentNumber + inputString;
                }
                return result;
            }
        }
    
        public class OperationAdd : Operation
        {
            public override double GetResult()
            {
                double result = 0;
                result = NumA + NumB;
                return result;
            }
        }
    
        public class OperationSub : Operation
        {
            public override double GetResult()
            {
                double result = 0;
                result = NumA - NumB;
                return result;
            }
        }
    
        public class OperationMul : Operation
        {
            public override double GetResult()
            {
                double result = 0;
                result = NumA * NumB;
                return result;
            }                                       
        }
    
        public class OperationDiv : Operation
        {
            public override double GetResult()
            {
                double result = 0;
                if (NumB==0)
                {
                    throw new Exception("除数不能为0");
                }
                else
                {
                    result = NumA / NumB;
                }
                return result;
            }
        }
    
        public class OperationSqr : Operation
        {
            public override double GetResult()
            {
                double result = 0;
                result = NumB * NumB;
                return result;
            }
        }
    
        public class OperationSqrt : Operation
        {
            public override double GetResult()
            {
                double result = 0;
                if (NumB<0)
                {
                    throw new Exception("负数不能开平方");
                }
                result = Math.Sqrt(NumB);
                return result;
            }
        }
    
        public class OperationReverse : Operation
        {
            public override double GetResult()
            {
                double result = 0;
                result = -NumB;
                return result;
            }
        }
    
        public class OperationFactory
        {
            public static Operation createOperation(string operate)
            {
                Operation operation = null;
                switch (operate)
                {
                    case "+":
                        operation = new OperationAdd();
                        break;
                    case "-":
                        operation = new OperationSub();
                        break;
                    case "*":
                        operation = new OperationMul();
                        break;
                    case "/":
                        operation = new OperationDiv();
                        break;
                    case"sqr":
                        operation = new OperationSqr();
                        break;
                    case"sqrt":
                        operation = new OperationSqrt();
                        break;
                    case "+/-":
                        operation = new OperationReverse();
                        break;
                    default:
                        break;
                }
                return operation;
            }
        }
    }
    View Code
        public partial class Form1 : Form
        {
            bool bOperate = false;
            Operation oper;
            public Form1()
            {
                InitializeComponent();
            }
    
            private void buttonClear_Click(object sender, EventArgs e)
            {
                txtShow.Text = "";
            }
    
            private void button0_Click(object sender, EventArgs e)
            {
                if(bOperate)
                {
                    txtShow.Text = "";
                    bOperate = false;
                }
                string number = ((Button)sender).Text;
                txtShow.Text = Operation.checkNumberInput(txtShow.Text,number);
            }
    
            private void buttonAdd_Click(object sender, EventArgs e)
            {
                if (txtShow.Text!="")
                {
                    oper = OperationFactory.createOperation(((Button)sender).Text);
                    oper.NumA = Convert.ToDouble(txtShow.Text);
                    bOperate = true;
                }
            }
    
            private void buttonEqual_Click(object sender, EventArgs e)
            {
                if (txtShow.Text!="")
                {
                    if (((Button)sender).Text!="=")
                    {
                        oper = OperationFactory.createOperation(((Button)sender).Text);
                    }
    
                    oper.NumB=Convert.ToDouble(txtShow.Text);
                    txtShow.Text=oper.GetResult().ToString();
                    bOperate=true;
                }
            }
        }
    View Code

    以上均参考大话设计模式

  • 相关阅读:
    go get golang.org被墙问题解决
    golang的cms
    一次composer错误使用引发的思考
    colly源码学习
    IdentityServer4 禁用 Consent screen page(权限确认页面)
    Visual Studio for Mac 初体验
    ASP.NET Core 简单实现七牛图片上传(FormData 和 Base64)
    ASP.NET Core 注入和获取 AppSettings 配置
    ASP.NET Core 使用 Hangfire 定时任务
    Repository 简化实现多条件查询
  • 原文地址:https://www.cnblogs.com/futengsheng/p/7991917.html
Copyright © 2020-2023  润新知