您的位置:首页 > 其它

大话设计模式一:简单工厂模式

2017-10-24 21:35 211 查看
在这里开始我的设计模式学习的编码之路,以前是在看书,现在实践一下。

首先要明白一点什么叫业务的封装,我大致从书上提取的一点就是使界面逻辑和业务的逻辑分开,明白这一点就可以了,我在这里就不在写过多的理论了。

简单工厂模式比较简单,以一个计算器的加、减、乘(除没写)来举例(我们这几个加、减算法都以两个数字举例):

首先这里有几个算法,找到共同点,都是两个数的运算,运算完之后有个结果,那么咱们就可以提取出一个类(这里写本人的理解有限,说的比较简单),Operation运算类

代码如下:

///类 Operation

class Operation

    {

        private double _numberA;

        public double NumberA

        {

            get;

            set;

        }

        private double _numberB;

        public double NumberB

        {

            get;

            set;

        }

        public virtual double GetResult()

        {

            return 0;

        }

       

    }

各个算法单独的组成一个类,继承这个运算类

如下:

///加法类 Add

/// <summary>

    /// 加法子类

    /// </summary>

    class Add : Operation

    {

        /// <summary>

        /// 通过工厂来实例化对象,通过对象的属性来给A、和B赋值

        /// </summary>

        /// <returns></returns>

        public override double GetResult()

        {

            return NumberA + NumberB;

        }

    }

///减法类 Sub

    class Sub : Operation

    {

        public override double GetResult()

        {

            return NumberA - NumberB;

        }

    }

///乘法类 Mul

 class Mul : Operation

    {

        public override double GetResult()

        {

            return NumberA * NumberB;

        }

    }

算法类建立完毕,剩下的就是建立工厂,工厂的作用说白了就是创建一个算法的实例,

代码如下:

 /// <summary>

    /// 工厂类,类实例化各个对象

    /// </summary>

    class Factory

    {

        

        public static Operation CreateOper(string operation)

        {

         Operation  oper=null;

        switch(operation)

        {

            case "+" :

                oper = new Add();

                break;

            case "-":

                oper = new Sub();

                break;

            case "*":

                oper = new Mul();

                break;

        }

        return oper;

        }

    }

至此所有的类写完了。

最后怎么在客户端调用呢?如下:

 class Program

    {

        static void Main(string[] args)

        {

            Operation oper = Factory.CreateOper("+");

            oper.NumberA = 5;

            oper.NumberB = 10;

            double result = oper.GetResult();

            //result=15.0

        }

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: