设计模式 抽象工厂 Abstract Factory

来源:互联网 发布:守望 网络初始化错误 编辑:程序博客网 时间:2024/06/06 01:56

       为创建一组相关或相互依赖的对象提供一个接口,而且无需指定它们的具体类。

       抽象工厂模式是工厂方法模式的升级版本,它用来创建一组相关或者相互依赖的对象。它与工厂方法模式的区别就在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则是针对的多个产品等级结构。在编程中,通常一个产品结构,表现为一个接口或者抽象类,也就是说,工厂方法模式提供的所有产品都是衍生自同一个接口或抽象类,而抽象工厂模式所提供的产品则是衍生自不同的接口或抽象类。
        在抽象工厂模式中,有一个产品族的概念:所谓的产品族,是指位于不同产品等级结构中功能相关联的产品组成的家族。抽象工厂模式所提供的一系列产品就组成一个产品族;而工厂方法提供的一系列产品称为一个等级结构。我们依然拿生产汽车的例子来说明它们之间的区别。

工厂方法模式:
一个抽象产品类,可以派生出多个具体产品类。  
一个抽象工厂类,可以派生出多个具体工厂类。 
每个具体工厂类只能创建一个具体产品类的实例
抽象工厂模式:
多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。 
一个抽象工厂类,可以派生出多个具体工厂类。 
每个具体工厂类可以创建多个具体产品类的实例。

角色组成

(1)抽象产品参与者
(2)抽象工厂参与者
(3)客户参与者
(4)具体产品参与者
(5)具体工厂参与者

原创粉丝点击