抽象工厂模式是工厂方法模式的进一步推广。它的定义是:spring
提供一个建立一系列相关或相互依赖对象的接口,而无需指定它们的具体类。spa
抽象工厂的使用场景以下:对象
客户端不关心产品类实例如何被建立、组合和表达的细节。这一条对于全部的工厂模式都是重要的;接口
这个系统的产品有多于一个的产品族,而系统只消费其中某一族的产品,这是抽象工厂的原始定义;产品
系统提供一个产品类的库,全部的产品以一样的接口出现,从而使客户端不依赖于实现。方法
在本文举例中,会出现蒙牛牛奶、蒙牛酸奶,伊利牛奶、伊利酸奶等产品,而蒙牛的牛奶和酸奶就是一个产品族。蒙牛专卖店只消费蒙牛产品族而不会消费伊利的产品族。客户端
抽象工厂的通常组成:block
抽象工厂、具体工厂、产品族。工厂模式
本文会演示抽象工厂的实例以及与其它工厂模式的对比,以及spring中如何应用工厂模式。实例
业务场景
每个奶制品专卖店都要进属于本身的产品族,例如蒙牛专卖店消费蒙牛产品族,伊利专卖店消费伊利产品族。