设计模式实例-简单工厂模式
2015-04-02 15:09
260 查看
using System; namespace Ahoo.Demo.DesignPatterns.Patterns.SimpleFactory { /// <summary> /// 简单工厂类 /// </summary> public class OperationFactory { public static Operation CreateOperation(string oper, double FirstNumber = 0, double SecondNumber = 0) { Operation _Operation; switch (oper) { case "+": _Operation = new AddOperation { FirstNumber = FirstNumber, SecondNumber = SecondNumber }; break; case "-": _Operation = new SubOperation { FirstNumber = FirstNumber, SecondNumber = SecondNumber }; break; case "*": _Operation = new MulOperation { FirstNumber = FirstNumber, SecondNumber = SecondNumber }; break; case "/": _Operation = new DivOperation { FirstNumber = FirstNumber, SecondNumber = SecondNumber }; break; default: throw new ArgumentException("操作符有误!"); } return _Operation; } } /// <summary> /// 抽象类 /// </summary> public abstract class Operation { public double FirstNumber { get; set; } public double SecondNumber { get; set; } public abstract double GetResult(); } /// <summary> /// 具体操作子类(+) /// </summary> public class AddOperation : Operation { public override double GetResult() { double result = FirstNumber + SecondNumber; return result; } } /// <summary> /// 具体操作子类(-) /// </summary> public class SubOperation : Operation { public override double GetResult() { double result = FirstNumber - SecondNumber; return result; } } /// <summary> /// 具体操作子类(*) /// </summary> public class MulOperation : Operation { public override double GetResult() { double result = FirstNumber * SecondNumber; return result; } } /// <summary> /// 具体操作子类(/) /// </summary> public class DivOperation : Operation { public override double GetResult() { if (SecondNumber == 0) { throw new ArgumentException("参数[SecondNumber]不能为0!"); } double result = FirstNumber / SecondNumber; return result; } } public class Client { public static void Execute() { Console.WriteLine("********请输入操作符********"); string str_oper = Console.ReadLine(); Operation operation = OperationFactory.CreateOperation(str_oper); Console.WriteLine("请输入操作符 第一个操作数"); operation.FirstNumber = Double.Parse(Console.ReadLine()); Console.WriteLine("请输入操作符 第二个操作数"); operation.SecondNumber = Double.Parse(Console.ReadLine()); Console.WriteLine("结果为:{0}", operation.GetResult()); } } }
相关文章推荐
- 设计模式---1:DOTNet设计模式实例之简单工厂模式(Simple Factory Pattern)
- PHP设计模式实例之(观察者模式、策略模式、简单工厂模式)
- Net设计模式实例之简单工厂模式(Simple Factory Pattern)
- Net设计模式实例之简单工厂模式(Simple Factory Pattern)
- 【自分の総括】设计模式之简单工厂模式(实例分析)
- Net设计模式实例之简单工厂模式(Simple Factory Pattern)
- 设计模式---简单工厂模式+实例
- PHP设计模式实例之(观察者模式、策略模式、简单工厂模式)
- Net设计模式实例之简单工厂模式(Simple Factory Pattern)
- PHP设计模式实例之(观察者模式、策略模式、简单工厂模式)
- PHP设计模式实例之(观察者模式、策略模式、简单工厂模式)
- C++设计模式之简单工厂模式实例
- 用实例解说Dot Net设计模式——装饰模式
- 《星际争霸》与设计模式(1)——简单工厂模式 (转)
- 正在学设计模式呵,转载一篇如何保证一个窗体的实例运行
- .Net中的设计模式——从实例谈Adapter模式
- 设计模式C#描述之——简单工厂模式
- 单实例设计模式的实现
- 设计模式------简单工厂模式
- 恋爱中的设计模式 之 Simple Factory模式 (简单工厂模式).doc