设计模式之简单工厂模式
一.简单工厂模式的好处:
容易修改而且可以复用,通过封装,继承,多态把程序的耦合度降低,从而使得程序可维护,可扩展灵活性还好;
二.简单工厂模式举例:
就拿简单的计算器来说吧,使用工厂模式实现加减乘除功能,使得该计算器可以在控制台,windows程序,web程序,手机程序都可以使用,是不是很开心呢,这好像古代的活字印刷术呢;
好了,先看看类图吧
下面看看代码:(Operation类)
public class Operatio
{
public double result = 0;
private double num1;
private double num2;
public double Num2
{
get
{
return num2;
}
set
{
num2 = value;
}
}
public double Num1
{
get
{
return num1;
}
set
{
num1 = value;
}
}
public virtual double GetResult()
{
return result;
}
}
下面就是继承自Operation类的子类,就以除法类为例吧:
public class OperationDiv:Operatio
{
public override double GetResult()
{
if(Num2!=0)
{
result = Num1 / Num2;
}
else
{
throw new Exception("除数不能为0");
}
return base.GetResult();
}
}
接下来就是简单运算工厂类了,也是重点
public class OperationFactory
{
public static Operatio CreateOperate(string operate)
{
Operatio oper = null;
switch(operate)
{
case "+":
oper = new OperationAdd();break;
case "-":
oper = new OperationSub();break;
case "*":
oper = new OperationMulti();break;
case "/":
oper = new OperationDiv();break;
}
return oper;
}
}
好了,现在类都完成了,那么怎么实现呢,看客户端代码:
namespace 简单工厂模式
{
class Program
{
static void Main(string[] args)
{
Operatio oper = null;
oper = OperationFactory.CreateOperate("+");
oper.Num1 = 2;
oper.Num2 = 3;
double result=oper.GetResult();
Console.WriteLine(result);
Console.ReadKey();
}
}
}
好了简单工厂模式就到这里,下面说一些关于看UML类图的一些小知识:
首先,类图分为三层,第一层为类的名称(抽象类用斜体表示),第二层为类的特性,通常为字段和属性,第三层为类的操作,通常是方法或行为。注意前面的符号,'+'表示public,'-'表示private,'#'表示protected。
接口图,与类图的区别主要是顶端有《interface》显示,第一行是接口名称,第二行为接口方法;接口的另一种表示方法,俗称“棒棒糖表示法”,就是在类图的矩形框上方画一个“棒棒糖”形状;
还有就是类与类,类与接口之间的关系了:
继承关系:空心三角形+实线
接口关系:空心三角形+虚线
关联关系:实线+箭头
聚合关系(例如:一个雁群和一只大雁,聚合表示一种弱的“拥有”关系):空心菱形+实线箭头
合成关系(例如:一只鸟和它的一对翅膀,合成是强的“拥有”关系):实心菱形+实线箭头
依赖关系:虚线箭头