工厂模式之——工厂方法模式

定义:

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

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

结构图:

   工厂模式之——工厂方法模式_第1张图片

 

代码:水果工厂

(父类)水果类:

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();//苹果对象生产完成

 

使用时机:

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

 

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

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

 

你可能感兴趣的:(工厂模式之——工厂方法模式)