设计模式笔记——简单工厂模式

来源:互联网 发布:微信小号矩阵 编辑:程序博客网 时间:2024/05/22 00:26

简单工厂模式的学习

       简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。

       所有设计模式总结请参考:http://blog.csdn.net/chr23899/article/details/46999267

       所有设计原则总结请参考:http://blog.csdn.net/chr23899/article/details/46999401

         首先来看下具体的效果图


         主要包括两个数 Number_X 和Number_Y 下面是四个操作 Add(+)、 Sub(-) 、 Mul(*)、 Div(/); 当用户点击其中一个操作时工厂会实例化具体的操作类型。

           改应用的类图如下: 


具体实现如下代码:

 //操作类    public class Operation    {        //定义两个操作数 number_x 与 number_y        private double number_x = 0;        private double number_y = 0;        //对 number_x 进行封装        public double Number_x        {            get { return number_x; }            set { number_x = value; }        }        //对 number_y 进行封装        public double Number_y        {            get { return number_y; }            set { number_y = value; }        }        //定义虚函数        public virtual double Result()        {            double number = 0;            return number;        }    }    //加法运算    public class Operation_Add : Operation    {        public override double Result()        {            double number = 0;            number = Number_x + Number_y;            return number;        }    }    //减法运算    public class Operation_Sub : Operation    {        public override double Result()        {            double number = 0;            number = Number_x - Number_y;            return number;        }    }    //乘法运算    public class Operation_Mul : Operation    {        public override double Result()        {            double number = 0;            number = Number_x * Number_y;            return number;        }    }    //除法运算    public class Operation_Div : Operation    {        public override double Result()        {            double number = 0;            if (Number_y == 0)                return 0;            number = Number_x / Number_y;            return number;        }    }    //定义一个工厂类获取具体的操作类    public class FactoryOfOperation    {        public static Operation GetTheOperation(string str)        {            Operation oper = null;            switch (str)            {                case "add":                    oper = new Operation_Add();                    break;                case "sub":                    oper = new Operation_Sub();                    break;                case "mul":                    oper = new Operation_Mul();                    break;                case "div":                    oper = new Operation_Div();                    break;                default:                    break;            }            return oper;        }    }

源程序下载地址: http://download.csdn.net/detail/chr23899/8922383

  原文出处: http://blog.csdn.net/chr23899  转发请说明

1 0
原创粉丝点击