浅析.net简单工厂模式

  编程时一门技术,更是一门艺术

  简单工厂模式利用面向对象方式通过继承、封装、多态把程序的耦合度降低,设计模式使得程序更加灵活,容易修改,易于复用。

  下面是服务器计算器代码:

  

复制代码 代码如下:

  using System;

  using System.Collections.Generic;

  using System.Linq;

  using System.Text;

  using System.Threading.Tasks;

  namespace DesignModel

  {

  /// <summary>

  /// 计算器

  /// </summary>

  public class Calculator   //创建一个计算器的基类可以接受两个参数,任何算法只需重写计算结果方法即可。

  {

  private double _numberA;

  private double _numberB;

  public double NumberA

  {

  get { return this._numberA; }

  set { this._numberA = value; }

  }

  public double NumberB

  {

  get { return this._numberB; }

  set { this._numberB = value; }

  }

  public virtual double GetResult()

  {

  double result = 0;

  return result;

  }

  }

  /// <summary>

  /// 加法

  /// </summary>

  public class Add : Calculator    //每添加一种计算方式只需添加一个计算类并重写基类方法即可

  {

  public override double GetResult()

  {

  return  NumberA + NumberB;

  }

  }

  /// <summary>

  /// 减法

  /// </summary>

  public class Sub : Calculator

  {

  public override double GetResult()

  {

  return NumberA + NumberB;

  }

  }

  /// <summary>

  /// 计算器工厂

  /// </summary>

  public class CalculatorFactory

  {

  public static Calculator GetResult(string oper)

  {

  Calculator calcu = null;

  switch (oper)

  {

  case "+":

  calcu = new Add();

  break;

  case "-":

  calcu = new Sub();

  break;

  }

  return calcu;

  }

  }

  }

  

复制代码 代码如下:

  static void Main(string[] args)

  {

  Console.WriteLine("请输入数字A:");

  string numbera = Console.ReadLine();

  Console.WriteLine("请输入运算符:");

  string oper = Console.ReadLine();

  Console.WriteLine("请输入数字B:");

  string numberb = Console.ReadLine();

  Calculator c = CalculatorFactory.GetResult(oper);

  c.NumberA = Convert.ToDouble(numbera);

  c.NumberB = Convert.ToDouble(numberb);

  Console.WriteLine(string.Format("{0}{1}{2}={3}", numbera, oper, numberb, c.GetResult()));

  Console.ReadLine();

  }

  基本验证没加,学习练习的同学可以自己加上

  28种设计模式后续更新

  

复制代码 代码如下:

  using System;

  using System.Collections.Generic;

  using System.Linq;

  using System.Text;

  using System.Threading.Tasks;

  namespace DesignModel

  {

  /// <summary>

  /// 计算器

  /// </summary>

  public class Calculator   //创建一个计算器的基类可以接受两个参数,任何算法只需重写计算结果方法即可。

  {

  private double _numberA;

  private double _numberB;

  public double NumberA

  {

  get { return this._numberA; }

  set { this._numberA = value; }

  }

  public double NumberB

  {

  get { return this._numberB; }

  set { this._numberB = value; }

  }

  public virtual double GetResult()

  {

  double result = 0;

  return result;

  }

  }

  /// <summary>

  /// 加法

  /// </summary>

  public class Add : Calculator    //每添加一种计算方式只需添加一个计算类并重写基类方法即可

  {

  public override double GetResult()

  {

  return  NumberA + NumberB;

  }

  }

  /// <summary>

  /// 减法

  /// </summary>

  public class Sub : Calculator

  {

  public override double GetResult()

  {

  return NumberA + NumberB;

  }

  }

  /// <summary>

  /// 计算器工厂

  /// </summary>

  public class CalculatorFactory

  {

  public static Calculator GetResult(string oper)

  {

  Calculator calcu = null;

  switch (oper)

  {

  case "+":

  calcu = new Add();

  break;

  case "-":

  calcu = new Sub();

  break;

  }

  return calcu;

  }

  }

  }

  本文就是.net设计模式中的简单工厂模式的内容了,非常简单,下一篇,我们来谈谈策略模式