C#简单工厂总结

简介: 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的时候进行调用。

目录
相关文章
|
5月前
|
设计模式 Java
Java设计模式:工厂模式之简单工厂、工厂方法、抽象工厂(三)
Java设计模式:工厂模式之简单工厂、工厂方法、抽象工厂(三)
抽象工厂和工厂方法对比
抽象工厂和工厂方法对比
57 0
|
6月前
创建型 简单工厂(工厂方法)模式
创建型 简单工厂(工厂方法)模式
58 1
|
设计模式 Java
设计模式之工厂模式(简单工厂、工厂方法、抽象工厂)
设计模式之工厂模式(简单工厂、工厂方法、抽象工厂)
71 0
工厂方法模式是怎么变抽象工厂的
工厂方法模式是怎么变抽象工厂的
31 0
|
C++
工厂方法VS简单工厂
工厂方法VS简单工厂
50 0
|
设计模式
大话设计模式-三种工厂模式(简单工厂、工厂方法、抽象工厂)
大话设计模式-三种工厂模式(简单工厂、工厂方法、抽象工厂)
简单工厂、工厂、抽象工厂总结
简单工厂、工厂、抽象工厂总结
46 0
|
设计模式 缓存 Java
简单工厂不简单
简单工厂不简单
简单工厂不简单
|
设计模式 C++
简单工厂VS工厂方法VS抽象工厂
简单工厂VS工厂方法VS抽象工厂
107 0
简单工厂VS工厂方法VS抽象工厂