学习 工厂模式

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

namespace Factory
{
    public  class Operation
    {
        double  _numberA;
        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 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;
        }
    }

    public class OperationFactory
    {
       
        public static Operation CreateOperate(string operation)
        {
            Operation oper = null;
            switch (operation)
            {
                case "+":
                    oper = new OperationAdd();
                    break;
                case "-":
                    oper = new OperationSub();
                    break;
                case "*":
                    oper = new OperationMul();
                    break;
                case "/":
                    oper = new OperationDiv();
                    break;
            }
            return oper;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            string number1;
            string number2;
            string operater;
            Operation oper;
            Console.WriteLine("请输入第一位数:");
            number1=Console.ReadLine();
            Console.WriteLine("请输入第二位数:");
            number2=Console.ReadLine();
            Console.WriteLine("请输入运算符:");
            operater=Console.ReadLine();
            oper=OperationFactory.CreateOperate(operater);
            oper.NumberA = Convert.ToDouble(number1);
            oper.NumberB = Convert.ToDouble(number2);
            Console.WriteLine("运算结果为:{0}", oper.getResult());
            Console.ReadKey();

        }
    }
}

posted @ 2009-10-26 22:08  浪剑天涯  阅读(184)  评论(0)    收藏  举报