haosk

定义:

 定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。

   相比于简单工厂消去了内部判断逻辑,遵守了开放封闭原则。但是代码量和逻辑复杂度更高了。

结构图:

   

 

代码:水果工厂

(父类)水果类:

Class Fruit

{

  。。。

}

(子类)苹果类:

Class Apple : Fruit

{

。。。

}

水果工厂抽象类:

Class FruitFactory

{

//生产水果抽象方法

Fruit*       CreateFruitFactory();

}

苹果工厂子类:

Class AppleFactory : FruitFactory

{

//生产苹果方法

Fruit*       CreateFruitFactory()
{
  return new Apple(); 
}

}

客户端:

FruitFactory CFruitFactory = new AppleFactory();//如果要生产草莓,加一个草莓工厂,一个草莓水果子类,这里换成new StrawberryFactory()就行了。

Fruit* CFruit = CFruitFactory.CreateFruitFactory();//苹果对象生产完成

 

使用时机:

  可以和简单工厂互相替换,需要根据具体项目而定。二者各有优缺点,就原则来说,工厂方法模式更好。

 

优点:克服了简单工厂违背开放封闭原则的缺点,又保持了封装对象创建过程的优点。

缺点:产品和工厂类成对增加,增加额外开发量、工程复杂度、编译速度。

 

相关文章:

  • 2021-08-01
  • 2021-12-14
  • 2022-02-13
  • 2021-11-18
  • 2021-08-22
  • 2021-06-17
  • 2022-01-21
  • 2021-11-03
猜你喜欢
  • 2021-12-19
  • 2021-12-21
  • 2021-09-21
  • 2021-10-23
  • 2021-09-21
  • 2022-01-26
  • 2018-08-21
相关资源
相似解决方案