一、简略类图
二、角色
抽象工厂角色:任何在模式中创建对象的工厂类必须实现这个接口。
具体工厂角色:实现抽象工厂接口的具体java类。
抽象产品角色:产品对象的共同父类或共同拥有的接口。
具体产品角色:实现抽象产品角色所声明的接口。模式中所创建的每一个对象都是某个产品角色的实例。
三、解决
主要解决接口选择的问题。
四、何时使用
明确地计划不同条件下创建不同实例时。
五、解决方式
让其子类实现工厂接口,返回的也是一个抽象的产品。
六、注意
复杂对象适合使用工厂模式,而简单对象,特别是只需要通过 new 就可以完成创建的对象,无需使用工厂模式。如果使用工厂模式,就需要引入一个工厂类,会增加系统的复杂度。