跳转至

工厂模式

意图

定义一个用于创建对象的接口看,让子类决定实例化哪一个类。

简单工厂

  • 单个工厂,静态方法:根据类型创建不同的抽象对象的实现;
  • 实例化对象,用工厂方法代替new操作;

工厂方法

  • 定义了一个创建对象的接口,但由子类决定实例化哪个类。工厂方法将对象的创建延迟到子类。

适用性

  • 在不同条件下创建不同实例时。

  • 工厂模式最基本的的动机是强制客户端使用接口,而不是具体的对象;

类图

工厂方法

factory_uml.png

优缺点

简单工厂

  • 优点:解耦:调用方不用负责对象的创建,只需要使用,明确各自的职责

  • 缺点:违反开闭原则,添加新的实现,会改动工厂方法的内部实现(简单的switch-case的改动可接受);

工厂方法

  • 不确定
  • 缺点:每增加一种产品就要相应的增加一个工厂类,类增多