1、主程序代码
using System; namespace _01简单工厂模式 { class Program { static void Main(string[] args) { Operation oper; //实例化Operation对象 oper = OperationFactory.createOperate("*"); oper.NumberA = 4; oper.NumberB = 2; double result = oper.GetResult(); //调用运算方法 Console.WriteLine(result); Console.ReadKey(); } } }
2、Operation运算类及具体的运算操作子类
using System; namespace _01简单工厂模式 { /// <summary> ///Operation运算类 /// </summary> public class Operation { private double _numberA = 0; //待计算的数字A、B private double _numberB = 0; public double NumberA { get { return _numberA; } set { _numberA = value; } } public double NumberB { get { return _numberB; } set { _numberB = value; } } /// <summary> /// 计算结果的方法,虚拟方法用于子类重写 /// </summary> /// <returns>数学运算后的结果</returns> public virtual double GetResult() { double result = 0; return result; } } /// <summary> /// 加减乘除类,继承运算类 /// </summary> class OperationAdd : Operation //加法类 { public override double GetResult() { double result = 0; result = NumberA + NumberB; return result; } } class OperationSub : Operation //减法类 { public override double GetResult() { double result = 0; result = NumberA - NumberB; return result; } } class OperationMul : Operation //乘法类 { public override double GetResult() { double result = 0; result = NumberA * NumberB; return result; } } class OperationDiv : Operation //除法类 { public override double GetResult() { double result = 0; if (NumberB == 0) throw new Exception("被除数不能为0!"); result = NumberA / NumberB; return result; } } }
3、运算工厂类
namespace _01简单工厂模式 { /// <summary> /// 运算工厂类 /// </summary> public class OperationFactory { public static Operation createOperate(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; } } }
注:本文内容是《大话设计模式》一书阅读过程复写代码!