简单工厂模式的学习

来源:互联网 发布:vb语言基础 编辑:程序博客网 时间:2024/05/16 04:35
最近一直在看有关设计模式的东西,现在就开始第一个设计模式,简单工厂模式,简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。

下面是一个简单的计算机的例子

1、首先要有一个父类(其实接口什么的也可以)

 public abstract class Operation    {        public double NumberA { get; set; }        public double NumberB { get; set; }        abstract public double GetResult();    }
作为父类,里面的GetReslt的方法是不实现的,所以我就将这个类声明为抽象类

下面就是具体的加减乘除算法

 class OperationAdd : Operation    {        public override double GetResult()        {            return NumberA + NumberB;        }    }    class OperationSub : Operation    {        public override double GetResult()        {            return NumberA - NumberB;        }    }    class OperationMul : Operation    {        public override double GetResult()        {            return NumberA + NumberB;        }    }    class OperationDiv : Operation    {        public override double GetResult()        {            return NumberA + NumberB;        }    }

每个计算类都继承Operation(为了偷懒,将类都写在一个文件里了,可以将它们分开的)

        public static Operation CreateOperation(String temp)        {            Operation oper = null;            switch (temp)            {                case "+":                    oper = new OperationAdd();                    break;                case "-":                    oper = new OperationSub();                    break;                case "*":                    oper = new OperationMul();                    break;                case "/":                    oper = new OperationDiv();                    break;            }            return oper;        }

根据传入的运算符号,实例化具体的元算对象,并且返回。

客户端具体使用方法

  Operation add = OperationFactory.CreateOperation("+");            add.NumberA = Double.Parse(txtA.Text);            add.NumberB = Double.Parse(txtB.Text);            MessageBox.Show(add.GetResult().ToString());

所有上述代码是基本基于大话设计模式,本人只是根据大话设计模式的进行学习

源代码:http://download.csdn.net/detail/freedomhjb/5020497