C#设计模式之简单工厂模式

operation.cs:

using System;
using System.Collections.Generic;
using System.Text;

namespace Design_Patten
{
    public class Operation
    {
        private double _numberA;
        private double _numberB;

        public double NumberA
        {
            get {return _numberA;}
            set { _numberA = value; }
        }

        public double NumberB
        {
            get { return _numberB; }
            set { _numberB = value; }
        }

        public virtual double GetResult()
        {
            double result = 0;
            return result;
        }
    }

    class OperateAdd : Operation
    {
        public override double GetResult()
        {
            double result = 0;
            result = NumberA + NumberB;
            return result;
        }
    }

    class OperateSub : Operation
    {
        public override double GetResult()
        {
            double result = 0;
            result = NumberA - NumberB;
            return result;
        }
    }

    class OperateMul : Operation
    {
        public override double GetResult()
        {
            double result = 0;
            result = NumberA * NumberB;
            return result;
        }
    }

    class OperateDiv : Operation
    {
        public override double GetResult()
        {
            double result = 0;
            if(NumberB==0)
                throw new Exception("除数不能为0");
            result = NumberA / NumberB;
            return result;
        }
        
    }
}

operationfactory.cs:(关键所在)
using System;
using System.Collections.Generic;
using System.Text;

namespace Design_Patten
{
    public class OperateFactory
    {
        public static Operation CreateOperate(string oper)
        {
            Operation ope = null;
            switch(oper)
            {
                case "+":
                    ope = new OperateAdd();
                    break;
                case "-":
                    ope=new OperateSub();
                    break;
                case "*":
                    ope=new OperateMul();
                    break;
                case "/":
                    ope=new OperateDiv();
                    break;
            }
            return ope;
        }
    }
}

主函数:
            Operation ope = OperateFactory.CreateOperate("+");
            ope.NumberA = 9;
            ope.NumberB = 3;
            double result=ope.GetResult();
            Console.WriteLine("{0}",result);  

posted on 2009-09-15 08:47  晴天1848  阅读(156)  评论(0)    收藏  举报