C#基于简单工厂模式实现的计算器功能示例
概述
本文将介绍如何基于简单工厂模式实现一个计算器功能的示例。我们会通过编写C#代码来实现一个简单的计算器,能够支持加、减、乘、除四种运算。
简单工厂模式
在讲解示例之前,我们先来了解一下简单工厂模式。简单工厂模式是一种创建型设计模式,它提供了一个工厂方法来创建对象。这种模式可以被认为是实现了基本的对象创建的代码复用。简单工厂模式的主要思想是将对象的创建过程移动到一个单独的工厂中,而不是在每个客户端都去实例化对象。
计算器示例说明
现在,我们来看看如何基于简单工厂模式实现一个计算器功能。
1. 定义接口和实现类
我们首先需要定义一个接口 ICalculator
来表示计算器。然后,我们再定义四个实现类 AddCalculator
、SubCalculator
、MulCalculator
和 DivCalculator
来分别表示加法、减法、乘法和除法。
public Interface ICalculator
{
double Calculate(double a, double b);
}
public class AddCalculator : ICalculator
{
public double Calculate(double a, double b)
{
return a + b;
}
}
public class SubCalculator : ICalculator
{
public double Calculate(double a, double b)
{
return a - b;
}
}
public class MulCalculator : ICalculator
{
public double Calculate(double a, double b)
{
return a * b;
}
}
public class DivCalculator : ICalculator
{
public double Calculate(double a, double b)
{
if (b == 0)
{
throw new DivideByZeroException();
}
return a / b;
}
}
2. 实现简单工厂类
接下来,我们需要实现一个简单工厂类 CalculatorFactory
来创建 ICalculator
对象。这个工厂类有一个静态方法 CreateCalculator
,根据不同的运算符,返回相应的 ICalculator
对象。
public static class CalculatorFactory
{
public static ICalculator CreateCalculator(char op)
{
switch(op)
{
case '+' :
return new AddCalculator();
case '-' :
return new SubCalculator();
case '*' :
return new MulCalculator();
case '/' :
return new DivCalculator();
default :
throw new ArgumentException("Invalid operator", nameof(op));
}
}
}
3. 使用计算器
现在我们已经实现了接口、实现类和简单工厂类,接下来就能使用它们来完成计算器的功能。
class Program
{
static void Main(string[] args)
{
Console.Write("a = ");
double a = double.Parse(Console.ReadLine());
Console.Write("b = ");
double b = double.Parse(Console.ReadLine());
Console.Write("operator (+, -, *, /): ");
char op = char.Parse(Console.ReadLine());
ICalculator calculator = CalculatorFactory.CreateCalculator(op);
double result = calculator.Calculate(a, b);
Console.WriteLine($"{a} {op} {b} = {result}");
}
}
以上代码中,用户输入了两个数字和一个运算符,CalculatorFactory.CreateCalculator(op)
返回相应的 ICalculator
对象,使用 ICalculator
对象计算出结果,最后输出结果。
示例说明
我们来看两个示例来更好理解这个计算器示例:
示例一:加法计算
假设我们要计算 1 + 2 的值,运行程序,按照提示输入以下内容:
a = 1
b = 2
operator (+, -, *, /): +
程序会输出:
1 + 2 = 3
示例二:除法计算
假设我们要计算 10 / 2 的值,运行程序,按照提示输入以下内容:
a = 10
b = 2
operator (+, -, *, /): /
程序会输出:
10 / 2 = 5
总结
本文演示了如何基于简单工厂模式实现一个计算器功能的示例。我们首先定义了一个 ICalculator
接口,然后实现四个实现类分别表示加法、减法、乘法和除法。接着,我们实现了一个简单工厂类 CalculatorFactory
来创建 ICalculator
对象。最后,我们使用这个接口、实现类和工厂类来完成计算器功能。
这个示例展示了在实际开发中如何使用简单工厂模式来组织对象的创建过程,并达到代码的复用及可扩展性的目的。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#基于简单工厂模式实现的计算器功能示例 - Python技术站