0
点赞
收藏
分享

微信扫一扫

C#简单工厂总结


一:定义(什么是简单工厂类)
抽象出一个类,专门负责其他类的实例化。根据客户端的不同要求,完成不同类的实例化。
二:优点
将类的实例化从客户端里独立出来,客户端不必考虑具体的对象如何创建。
工厂类负责创建具体的类,客户端直接使用就可以
三:缺点
增加新功能需要增加新的子类。
四:实现
题意:客户输入两个数和运算符号,得到结果。
构成:三个部分。运算类、工厂类、客户端、以及他的子类。
UML类图:见一
代码:
运算类

public class Operation //父类,算法类
{
private double _numberA = 0; //定义一个属性A,接受第一个数
public double NumberA
{
get { return _numberA; }
set { _numberA = value; }
}
private double _numberB = 0; //定义一个属性B,接受第二个数
public double NumberB
{
get { return _numberB; }
set { _numberB = value; }
}
public virtual double GetResult() //获得返回值的操作
{
double result = 0;
return result;
}
}
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;
result = NumberA / NumberB;
return result;
}
}
工厂类:此类负责类的实例化,是简单工厂的重点。
class OperationFactory //作为一个工厂类,负责创造实例
{
public static Operation creatOperate(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;
}

客户端

static void Main(string[] args)
{
Operation oper;
oper = OperationFactory.creatOperate("+"); //根据输入的符号,在工厂里取对应的实例化的类
oper.NumberA = 1;
oper.NumberB = 2;
double result = oper.GetResult(); //本例中调用的加法类GetResult方法,让上面两个参数相加
Console.WriteLine(result);
}


五:涉及知识点
方法的重写:
父类方法里添加virtual关键字,子类重写时用override关键字。
构造方法:
与类名同名,没有返回值,在new的时候进行调用。

举报

相关推荐

0 条评论