前面介绍过简单工厂的模式,简单工厂模式精确的来说,并不算是二十三种设计模式中的一种,它不遵守开闭原则,就是在新增类型的时候,简单工厂里的swith判断语言需要做修改,而工厂模式就是一种解决了简单工厂的一种设计模式,下面详细介绍工厂模式。
定义:工厂方法模式,定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。
UML类图:
角色介绍:
1、抽象工厂接口类:定义所有工厂的类,里面声明创建产品实例的方法。
2、具体工厂:实现工厂接口,根据具体的工厂类型,创建对应的产品实例。
3、产品抽象类:定义这类产品的属性,和抽象方法。
4、具体产品类:继承产品抽象类,针对本类产品实例的需要重新实现产品抽象类里的抽象方法。
示例代码:
抽象工厂接口类:
interface IFactory
{
Operation CreateOperation();
}
具体工厂类:
class AddFactory:IFactory
{
public Operation CreateOperation()
{
return new OperationAdd();
}
}
class SubFactory:IFactory
{
public Operation CreateOperation()
{
return new OperationSub();
}
}
产品抽象类:
abstract class Operation
{
public double x{get;set;}
public double y{get;set;}
public abstract double GetResult();
}
具体产品类:
class OperateAdd:Operation
{
public override double GetResult()
{
return x + y;
}
}
class OperateSub:Operation
{
public override double GetResult()
{
return x - y;
}
}
客户端调用:
IFactory factory =new AddFactory();
Operation operation=factory.CreateOperation();
operation.GetResult();
浙公网安备 33010602011771号