在这里开始我的设计模式学习的编码之路,以前是在看书,现在实践一下。
首先要明白一点什么叫业务的封装,我大致从书上提取的一点就是使界面逻辑和业务的逻辑分开,明白这一点就可以了,我在这里就不在写过多的理论了。
简单工厂模式比较简单,以一个计算器的加、减、乘(除没写)来举例(我们这几个加、减算法都以两个数字举例):
首先这里有几个算法,找到共同点,都是两个数的运算,运算完之后有个结果,那么咱们就可以提取出一个类(这里写本人的理解有限,说的比较简单),Operation运算类
代码如下:
///类 Operation
class Operation
{
private double _numberA;
public double NumberA
{
get;
set;
}
private double _numberB;
public double NumberB
{
get;
set;
}
public virtual double GetResult()
{
return 0;
}
}
各个算法单独的组成一个类,继承这个运算类
如下:
///加法类 Add
/// <summary>
/// 加法子类
/// </summary>
class Add : Operation
{
/// <summary>
/// 通过工厂来实例化对象,通过对象的属性来给A、和B赋值
/// </summary>
/// <returns></returns>
public override double GetResult()
{
return NumberA + NumberB;
}
}
///减法类 Sub
class Sub : Operation
{
public override double GetResult()
{
return NumberA - NumberB;
}
}
///乘法类 Mul
class Mul : Operation
{
public override double GetResult()
{
return NumberA * NumberB;
}
}
算法类建立完毕,剩下的就是建立工厂,工厂的作用说白了就是创建一个算法的实例,
代码如下:
/// <summary>
/// 工厂类,类实例化各个对象
/// </summary>
class Factory
{
public static Operation CreateOper(string operation)
{
Operation oper=null;
switch(operation)
{
case "+" :
oper = new Add();
break;
case "-":
oper = new Sub();
break;
case "*":
oper = new Mul();
break;
}
return oper;
}
}
至此所有的类写完了。
最后怎么在客户端调用呢?如下:
class Program
{
static void Main(string[] args)
{
Operation oper = Factory.CreateOper("+");
oper.NumberA = 5;
oper.NumberB = 10;
double result = oper.GetResult();
//result=15.0
}
}