VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > Python基础教程 >
  • C#教程之设计模式——简单工厂

慢慢的做记录,做最强大的自己

看了大话设计模式之后感触很深,发现自己还有很多学习的东西,设计软件并不是一两句代码把功能写完了就行,需要思考的内容有很多

代码来源参考大话设计模式这本书,这里在博客里记录一下,不可能每次都去翻书,但是在博客里面是非常好找的。

范例为一个简单工厂模式的计算器,首先先创建一个计算器运算所需要用到的数据模型,在java里面也叫bean,就是一个抽象的类,这里我们先创建一个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 results = 0;
            return results;
        }

        

    }
复制代码

然后再创建加减乘除类,以便工厂进行调用

复制代码
class OperationAdd : Operation
    {
        public override double GetResult()
        {
            double result = 0;
            result = NumberA + NumberB;
            return result;
        }
    }

    class OperationSub : Operation
    {
        public override double GetResult()
        {
            double result = 0;
            result = NumberA - NumberB;
            return result;
        }
    }

    class OperationMul : Operation
    {
        public override double GetResult()
        {
            double result = 0;
            result = NumberA * NumberB;
            return result;
        }
    }

    class OperationDiv : Operation
    {
        public override double GetResult()
        {
            double result = 0;
            result = NumberA / NumberB;
            return result;
        }
    }
复制代码

创建工厂类,实例化出合适的对象

复制代码
 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;

            }
            return oper;
        }
复制代码

 

通过多态,返回父类的方式,然后实现计算结果

复制代码
static void Main(string[] args)
        {
            Operation oper;
            oper = OperationFactory.CreateOperate("+");
            oper.NumberA = 1;
            oper.NumberB = 2;
            double result = oper.GetResult();
            Console.WriteLine(result);
            Console.ReadLine();
        }
复制代码

但是简单工厂模式会存在一个问题,后续如果新增方法的话那么还需要继续创建运算类,然后实例化对象,那么这样会增加代码结构的复杂度,当然还是有方法解决的,但是这里就只做简单工厂模式的介绍了,

三层模型基本上如果不是用了特别的方法那么基本都是基于简单工厂模式来处理方法的

Ps:这里补充一下

运行结果如下


相关教程