工厂方法模式(Factory Method)
工厂方法模式
模式动机
与简单工厂模式相比新加了抽象工厂接口
模式定义
- 工厂方法模式(Factory Method Pattern)简称工厂模式,也叫虚拟构造器(Virtual Constructor)模式或者多态工厂(Polymorphic Factory)模式,它属于类创建型模式。
- 在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类。
模式结构
模式分析
- 工厂方法模式是简单工厂模式的迚一步抽象和推广
- 工厂方法模式保持了简单工厂模式的优点,并克服了它的缺点
- 核心的工厂类丌再负责所有产品的创建,而是将具体创建工作交给其子类去完成
- 可以允许系统在丌修改工厂角色的情况下引进新产品
- 增加具体产品-->增加具体工厂,符合“开闭原则
模式优点
- 工厂方法用来创建客户所需要的产品,同时还向客户隐藏了哪种具体产品类将被实例化这一细节
- 能够让工厂自主确定创建何种产品对象,而如何创建这个对象的细节则完全封装在具体工厂内部
- 在系统中加入新产品时,完全符合开闭原则
模式缺点
- 系统中类的个数将成对增加,在一定程度上增加了系统的复杂度,会给系统带来一些额外的开销
- 增加了系统的抽象性和理解难度
使用情形
- 客户端丌知道它所需要的对象的类(客户端丌需要知道具体产品类的类名,只需要知道所对应的工厂即可,具体产品对象由具体工厂类创建)
- 抽象工厂类通过其子类来指定创建哪个对象