【软考学习】设计模式——工厂方法

来源:互联网 发布:linux xampp使用教程 编辑:程序博客网 时间:2024/06/03 03:27

【背景】

设计模式是非常重要的一块知识,每个设计模式都值得深入了解和学习。

【内容】

工厂方法设计模式总结:

    一、定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类。使一个类的实例化延迟到其子类。

    二、UML结构图:

三、代码实现:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 工厂方法_计算器{    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; }        }        /// <summary>        /// 得到运算结果        /// </summary>        /// <returns></returns>        public virtual double GetResult()        {            double result = 0;            return result;        }    }    /// <summary>    /// 加法类    /// </summary>    class OperationAdd: Operation    {        public override double GetResult()        {            double result=0;            result =NumberA+NumberB;         return result ;        }    }    /// <summary>    /// 减法类    /// </summary>    class OperationSub:Operation     {        public override double GetResult()        {            double result=0;            result =NumberA-NumberB;         return result;        }    }    /// <summary>    /// 乘法类    /// </summary>    class OperationMul:Operation     {        public override double GetResult()        {            double result =0;            result =NumberA *NumberB;         return result;        }    }    /// <summary>    /// 除法类    /// </summary>    class OperationDiv:Operation     {        public override double GetResult()        {            double result=0;            result =NumberA /NumberB;         return result;        }    }    /// <summary>    /// 工厂方法    /// </summary>    interface IFactory    {        Operation CreateOperation();    }    /// <summary>    /// 专门负责生产“+”的工厂    /// </summary>    class AddFactory : IFactory    {        public Operation CreateOperation()        {            return new OperationAdd();        }    }    /// <summary>    /// 专门负责生产“-”的工厂    /// </summary>    class SubFactory : IFactory    {        public Operation CreateOperation()        {            return new OperationSub();        }    }    /// <summary>    /// 专门负责生产“*”的工厂    /// </summary>    class MulFactory : IFactory    {        public Operation CreateOperation()        {            return new OperationMul();        }    }    /// <summary>    /// 专门负责生产“/”的工厂    /// </summary>    class DivFactory : IFactory    {        public Operation CreateOperation()        {            return new OperationDiv();        }    }}


using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 工厂方法_计算器{    class Program    {        static void Main(string[] args)        {            IFactory operFactory = new AddFactory();            Operation oper = operFactory.CreateOperation();            oper.NumberA = 1;            oper.NumberB = 2;            double result = oper.GetResult();            Console.WriteLine(result);            Console.Read();        }    }}