Danny's Work Space

-----------------------Tomorrow is another day!

新随笔 管理

    简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。

    从设计模式类型上来说,简单工厂模式属于创建型模式,又叫静态工厂方法模式(Static Factory Method)。

  简单工厂类:简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用,创建所需的产品对象。

  运算类:简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。

  加法类、乘法类(...):是简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例。

//简单工厂类
public class OpreateFactory
    {
        public static Operation createOprate(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;
        }
    }

//运算类 
public class Operation
    {
        public double NumberA
        {
            get;
            set;
        }

        public double NumberB
        {
            get;
            set;
        }

        public virtual double GetResult()
        {
            return 0;
        }

    }

//加法类
public class OperationAdd:Operation
    {
        public override double GetResult()
        {
            return NumberA + NumberB;
        }
    }
//减法类
public class OperationSub:Operation
    {
        public override double GetResult()
        {
            return NumberA - NumberB;
        }
    }
//乘法类
public class OperationMul:Operation
    {
        public override double GetResult()
        {
            return NumberA * NumberB;
        }
    }
//除法类
    public class OperationDiv:Operation
    {
        public override double GetResult()
        {
            if (NumberB != 0)

                return NumberA / NumberB;
            else
                return 0;
        }
    }

//客户端

Operation oper;
oper=OperationFactory.createOperation("+");
oper.NumberA=1;
oper.NumberB=2;
double result=oper.GetResult();
posted on 2011-08-10 10:40  EndyHu  阅读(422)  评论(0)    收藏  举报