工厂模式:用于封装某些类的对象的创建
当对应一些接口或抽象类时,可以接收子类的对象,但不能直接创建实例,而是通过创建对应的工厂类,实现操作不同子对象的创建,工厂可以根据用户的不同选择返回若干个不同类的对象。
代码示例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Test_CSharp
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("输入第一个数字:");
int a = int.Parse(Console.ReadLine());
Console.WriteLine("输入运算符:");
string b = Console.ReadLine();
Console.WriteLine("输入第二个数字:");
int c = int.Parse(Console.ReadLine());
Calculator calc = Factory.Count(b);
Console.WriteLine("结果:");
calc.Compute(a, c);
Console.ReadKey();
}
}
/// <summary>
/// 父类:包含抽象方法——用于计算
/// </summary>
public abstract class Calculator
{
/// <summary>
/// 抽象方法:用于计算
/// </summary>
/// <param name="a">计算的第一个数字</param>
/// <param name="b">计算的第二个数字</param>
public abstract void Compute(int a, int b);
}
/// <summary>
/// 子类:加法
/// </summary>
public class Addition : Calculator
{
/// <summary>
/// 改写计算方法用于两数相加
/// </summary>
public override void Compute(int a, int b)
{
Console.WriteLine(a + b);
}
}
/// <summary>
/// 子类:减法
/// </summary>
public class Subtraction : Calculator
{
/// <summary>
/// 改写计算方法用于两数相减
/// </summary>
public override void Compute(int a, int b)
{
Console.WriteLine(a - b);
}
}
/// <summary>
/// 子类:乘法
/// </summary>
public class Multiplication : Calculator
{
/// <summary>
/// 改写计算方法用于两数相乘
/// </summary>
public override void Compute(int a, int b)
{
Console.WriteLine(a * b);
}
}
/// <summary>
/// 子类:除法
/// </summary>
public class DivisionMethod : Calculator
{
/// <summary>
/// 改写计算方法用于两数相除
/// </summary>
public override void Compute(int a, int b)
{
Console.WriteLine(a / b);
}
}
/// <summary>
/// 类:实现操作不同子对象的创建
/// </summary>
public class Factory
{
/// <summary>
/// 方法:用于创建不同子对象
/// </summary>
/// <param name="name">运算符</param>
/// <returns>子对象</returns>
public static Calculator Count(string name)
{
Calculator cal = null;
switch (name)
{
case "+": cal = new Addition(); break;
case "-": cal = new Subtraction(); break;
case "*": cal = new Multiplication(); break;
case "/": cal = new DivisionMethod(); break;
}
return cal;
}
}
}
--->
输入第一个数字:
9
输入运算符:
/
输入第二个数字:
3
结果:
3