一、概念
1.1、定义
又被称为虚拟构造器(Virtual Constructor)模式或者多态工厂(Polymorphic Factory)模式。
在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类。
- Product,抽象产品类
- ConcreteProduct,具体产品类
- Factory,抽象工厂类
- ConcreteFactory,具体工厂类
1.2、解决的问题
解决问题:在简单工厂模式下面,新增加一种产品,需要改动工厂类,为了规避对工厂类的频繁修改,能够简单快速的增加新产品。
模式解决思路:利用面向对象的多态技术,在简单工厂模式基础上,对工厂进一步的抽象。将具体产品类的创建过程,交给具体的工厂子类来完成。
二、模式的应用和优缺点
2.1、应用场景
- 应用实例:
1、日志记录器:其要求支持多种日志记录方式,如文件记录、数据库记录等,且用户可以根据要求动态选择日志记录方式
2.2、优缺点
优点:
增加新的产品类时无须修改现有系统,并封装了产品对象的创建细节,系统具有良好的灵活性和可扩展性。缺点:
类膨胀:增加新产品的同时需要增加新的工厂,导致系统类的个数成对增加,在一定程度上增加了系统的复杂性。