zoukankan      html  css  js  c++  java
  • 简单工厂模式

    通过一个计算器的例子来学习简单工厂

    1、Operation 运算类

    public class Operation
    {
        private double _numberA=0;
        private double _numberB=0;
    
        public double NumberA
        {
            get{return _numberA}
            set{_numberA=value;}
        }
    
         public double NumberB
        {
            get{return _numberB}
            set{_numberB=value;}
        }
    
        public virtual double GetResult()  //虚方法,方便子类重写
        {
            double result=0;
            return result;
        }
    }

    2、加减乘除类

    class OpertionAdd:Operation  //加法类
    {
        public override double GetResult()
        {
            double result=0;
            result =NumberA+NumberB;
            return result;
        }
    }
    
    class OpertionSub:Operation  //减法类
    {
        public override double GetResult()
        {
            double result=0;
            result =NumberA-NumberB;
            return result;
        }
    }
    
    class OpertionMul:Operation  //乘法类
    {
        public override double GetResult()
        {
            double result=0;
            result =NumberA*NumberB;
            return result;
        }
    }
    
    
    class OpertionDiv:Operation  //除法类
    {
        public override double GetResult()
        {
            double result=0;
            if(NumberB==0)
            {
                throw new Exception("除数不能为0");
            }
            result =NumberA/NumberB;
            return result;
        }
    }

    3、简单运算工厂类

    public class OperationFactory
    {
        public static Operation CreateOperate(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;
            }
        }
    }

    4、客户端代码

    Operation oper;
    oper=OperationFactory.CreateOperate("+");
    oper.NumberA=1;
    oper.NumberB=2;
    double result=oper.GetResult();
  • 相关阅读:
    从DataGridViewer导出Excel
    C#获取特定进程CPU和内存使用率
    51 nod 1265 四点共面
    51nod 1384 全排列
    51nod 2006 飞行员配对
    codeforces 839A
    codeforce 837C
    codeforces 837B
    codoforces 837A
    GIT
  • 原文地址:https://www.cnblogs.com/shanoon/p/5452033.html
Copyright © 2011-2022 走看看