首页 > 技术文章 > 工厂模式之——简单工厂模式

haosk 2020-07-14 22:44 原文

原理:

 在工厂类中,通过多态,实例出子类对象,返回父类。客户端只依赖父类和工厂类,不依赖子类;但需要知道所有子类,以决定实例化哪个子类对象。

举例:水果工厂

  (父类)水果类:

Class Fruit

{

  。。。

}

  子类)苹果类:

Class Apple : Fruit

{

。。。

}

  (子类)草莓类:

Class Strawberry : Fruit

{

。。。

}

  水果工厂类:

Class FruitFactory

{

//可生产水果类型

typedef enum TagEnumFruit

{

Apple ,

Strawberry ,

FruitEnd,

}EnumFruit;

//生产方法

Fruit*         CreateFruitFactory(EnumFruit FruitType)
{
  switch(FruitType)
  {
    case Apple :
      return new Apple();
    case Strawberry :
      return new Strawberry();  
    default :
      return null;
  }
}

}

客户端:

Fruit* CFruit = null;

CFruit = FruitFactory.CreateFruitFactory(Apple );//苹果对象生产完成

 

优点:封装类产品子类,当需要增加或者修改产品只需要对子类进行增加或者修改,同时修改工厂类的switch-case就ok了。

缺点:违背开放-封闭原则,每次增改都需要修改工厂类。并且需要对客户暴露所有产品。

 

推荐阅读