工厂方法模式(Factory Method Pattern):(工厂模式)也叫做虚拟构造器模式或者多态工厂模式,属于类创建型模式。在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类负责生成具体的产品对象。
工厂方法模式包含如下四种角色:
- Protect:抽象产品
- ConcreteProtect:具体产品
- Factory:抽象工厂
- ConcreteFactory:具体工厂
具体流程为客户端掌握具体工厂的名称,根据具体工厂的名称向抽象工厂发送请求,获取到一个具体工厂的对象,由具体工厂对象创建出具体的产品,关系类图如下,客户端引用抽象工厂和和抽象产品类,具体工厂和具体产品类分别继承抽象工厂以及抽象产品类,具体工厂引用具体产品类,关系为制造关系。
工厂方法模式优点:
- 用户只需要关心所需产品对应的工厂,无需关心创建细节,甚至无需关心具体产品类的类名。
- 工厂可以自主确定创建何种产品对象,而如何创建这个对象的细节则完全封装在具体产品内部。
- 在系统中增加新产品是,无需修改抽象工厂和抽象产品提供的具体接口,只需要添加一个具体工厂和具体产品即可。
缺点:
- 类的数量过多
- 增加了系统的抽象性和理解难度