简单的工厂模式(参考于大话设计模式)

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

namespace EasyFactory
{
    class Program
    {
        static void Main(string[] args)
        {  
            Console.WriteLine("请输入运算符");
            //调用工厂类生成一个Operater类型的对象
            Operater ope=Factory.GetOperater(Console.ReadLine());
            Console.WriteLine("请输入要运算的第一个数");
            ope.NumberA = double.Parse(Console.ReadLine());
            Console.WriteLine("请输入要运算的第二个数");
            ope.NumberB= double.Parse(Console.ReadLine());
            double result = ope.GetResult();
            Console.WriteLine("运算结果是{0}",result);
            
            
        }
    }
    class Operater
    {
        private double numberA;
        public double NumberA
        {
            get { return numberA; }
            set { numberA = value; }
        }
        private double numberB;
        public double NumberB
        {
            get { return numberB; }
            set { numberB = value; }
        }
        public virtual double GetResult()
        {
            double result = 0;
            return result;
        }
    }
    /// <summary>
    /// 加法运算
    /// </summary>
    class Add : Operater
    {
        public override double GetResult()
        {
            double result = 0;
            result = NumberA + NumberB;
            return result;
        }
    }
    /// <summary>
    /// 减法运算
    /// </summary>
    class Sub : Operater
    {
        public override double GetResult()
        {
            double result = 0;
            result = NumberA - NumberB;
            return result;
        }
    }
    /// <summary>
    /// 乘法运算
    /// </summary>
    class Mul : Operater
    {
        public override double GetResult()
        {
            double result = 0;
            result = NumberA * NumberB;
            return result;
        }
    }
    /// <summary>
    /// 除法运算
    /// </summary>
    class Div : Operater
    {
        public override double GetResult()
        {
            double result = 0;
            if (NumberB == 0)
            {
                throw new Exception("除数不能为0");
            }
                result = NumberA / NumberB;
            return result;
        }
    }
    /// <summary>
    /// 工厂
    /// </summary>
    class Factory
    {
        private static Operater ope;
        public static Operater GetOperater(string operater)
        {
           switch(operater)
           {
               case "+":
                   ope=new Add(); break;
               
               case "-":
                   ope = new Sub(); break;

               case "*":
                   ope = new Mul(); break;

               case "/":
                   ope = new Div(); break;

           }
           return ope;
        }
    }
}

 

posted @ 2010-08-24 08:46  mjsky  阅读(263)  评论(0编辑  收藏  举报