前面介绍过简单工厂的模式,简单工厂模式精确的来说,并不算是二十三种设计模式中的一种,它不遵守开闭原则,就是在新增类型的时候,简单工厂里的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();

posted on 2013-07-12 10:25  Kelly_HanShuai  阅读(126)  评论(0)    收藏  举报