设计模式学习(一):简单工厂模式练习
2011-08-22 09:41
316 查看
题目:以面向对象编程方式实现以下功能,输入两个数和操作符,进行“+”,“-”,“*”,"/"运行,显示结果
Operation.cs
客户端代码:
UML图
总结:
简单工厂模式就是利用面向对象的多态性,工厂类通过输入条件返回特定的实现类。
Operation.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace DesignPatterns { /// <summary> /// 运算类 /// </summary> public class Operation { protected string Sign = ""; private double fNumberA = 0, fNumberB = 0; public double NumberA { get { return fNumberA;} set { fNumberA = value; } } public double NumberB { get { return fNumberB; } set { fNumberB = value; } } public virtual double Result { get { return 0; } } public string ToString() { return Convert.ToString(NumberA) + Sign + Convert.ToString(NumberB) + "=" + Convert.ToString(Result); } } /// <summary> /// 加法运算类 /// </summary> class OperationAdd : Operation { public OperationAdd() { Sign = "+"; } public override double Result { get { return (NumberA + NumberB); } } } /// <summary> /// 减法运算类 /// </summary> class OperationSub : Operation { public OperationSub() { Sign = "-"; } public override double Result { get { return (NumberA - NumberB); } } } /// <summary> /// 乘法运算类 /// </summary> class OperationMul : Operation { public OperationMul() { Sign = "*"; } public override double Result { get { return NumberA * NumberB; } } } /// <summary> /// 除法运算类 /// </summary> class OperationDiv : Operation { public OperationDiv() { Sign = "/"; } public override double Result { get { if(NumberB==0) { throw new Exception("被除数为零"); } return (NumberA / NumberB); } } } /// <summary> /// 简单工厂类 /// </summary> public class OperationFactory { /// <summary> /// 根据运算符取对应的运算类 /// </summary> /// <param name="strOperation">运算符</param> /// <returns>运算类</returns> public static Operation GetOperation(string strOperation) { Operation fOperation = null; switch (strOperation) { case "+": fOperation = new OperationAdd(); break; case "-": fOperation = new OperationSub(); break; case "*": fOperation = new OperationMul(); break; case "/": fOperation = new OperationDiv(); break; } return fOperation; } } }
客户端代码:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace DesignPatterns { class Program { static void Main(string[] args) { Operation op = OperationFactory.GetOperation("*"); op.NumberA = 123.22; op.NumberB = 111; Console.Out.WriteLine(op.ToString()); Console.In.Read(); } } }
UML图
总结:
简单工厂模式就是利用面向对象的多态性,工厂类通过输入条件返回特定的实现类。
相关文章推荐
- 简单工厂模式 策略模式【设计模式】【学习总结】
- 设计模式学习笔记-简单工厂模式
- 设计模式学习--------3.简单工厂模式学习
- 设计模式学习之工厂模式(简单工厂模式)
- 设计模式学习之策略模式和简单工厂模式的区别和联系
- 设计模式---简单工厂模式(学习笔记)
- 设计模式学习笔记--简单工厂模式
- 学习设计模式系列之“简单工厂模式”
- 设计模式学习--------3.简单工厂模式学习
- 设计模式学习笔记——简单工厂模式、工厂方法模式、抽象工厂模式
- 设计模式学习笔记之练习代码
- 学习23种设计模式之简单工厂模式
- 简单工厂模式的C++实现——设计模式学习(1)
- 设计模式学习(四):集中式工厂的实现—简单工厂模式
- (@WhiteTaken)设计模式学习——简单工厂模式
- C#设计模式学习笔记(一) 之 简单工厂模式
- 设计模式学习笔记(1)——简单工厂模式
- 设计模式练习(1)——简单工厂模式
- 【幻化万千戏红尘】qianfengDay10-java基础学习:成员内部类、静态内部类、局部和匿名内部类,设计模式之简单工厂模式
- 设计模式学习笔记--简单工厂模式