工厂模式:定义一个用于创建对象的接口,让子类觉得实例化哪一个类。Factory Method使一个类的实例化延迟到了子类。
抽象工厂类:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
二者的区别:
工厂模式:可以选择实例化具体的哪一个类,而且工厂类创建实例有很大的自由度,可以自由选择组合和基础已有的工 厂类和产品类。
抽象工厂:可以理解为工厂模式的一个特例。将所有的接口都定义好,一次性将所有的产品都实例化。
二者的联系:
二者本质上都是将产品的类似实例化过程通过一个类进行统一管理。抽象工厂是将所有需要的接口都定义好,有不同的子类去分别实现,而工厂类只提供了一个创建接口,具体的实例化过程可以有子类自由选择。
抽象工厂和工厂类也不是严格区分的,可以根据具体情况,将不需要实现的接口放到抽象工厂的接口基类中,而在子类的实现中可以采用工厂类的方法,通过组合、继承的方法尽可能多的合理利用已存在的产品类。