天天看点

Abstract factory抽象工厂--对象创建型

意图:

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

  别名:Kit

补充:

  抽象产品A : (产品A1 和产品 A2)  

  抽象产品B : ( 产品B1 和 产品B2)

一般情况下:想要创建产品A1和A2

  {

  ProductA a1 = new ProductA1();

  ProductA a2 = new ProductA2();

在工厂设计模式中,可以设计一个工厂,由它来提供产品A1和产品A2的创建过程,即

工厂模式

ProductAFactory{

  public static ProductA createProductA1(){

    return ProductA();

  }

  public static ProductA createProductA2(){

    return ProductA2();

  }

}

抽象工厂:

将相似的工厂进行抽象合并 ,是工厂模式的进一步抽象升华

在这个抽象工厂中 A1和B1====A2 和 B2 是有相似关系的

AbstarctFactory{

createProductA(){

// 子类/实现类,可以根据需要创建产品 A1 或产品 A2

}

createProductB(){

// // 子类/实现类,可以根据需要创建产品 B2 或产品 B2

}

}

 动机:

抽象工厂模式提供了一种方式,可以将一组具有同一主题的单独的工厂封装起来。在正常使用中,客户端程序需要创建抽象工厂的具体实现,然后使用抽象工厂作为接口来创建这一主题的具体对象。客户端程序不需要知道(或关心)它从这些内部的工厂方法中获得对象的具体类型,因为客户端程序仅使用这些对象的通用接口。抽象工厂模式将一组对象的实现细节与他们的一般使用分离开来。

Abstract factory抽象工厂--对象创建型

“工厂”是创建产品(对象)的地方,其目的是将产品的创建与产品的使用分离。 抽象工厂模式的目的,是将 若干抽象产品的接口与 不同主题产品的具体实现分离开。这样就能在增加新的具体工厂的时候,不用修改引用抽象工厂的客户端代码。

使用抽象工厂模式,能够在具体工厂变化的时候,不用修改使用工厂的客户端代码,甚至是在运行时。然而,使用这种模式或者相似的设计模式,可能给编写代码带来不必要的复杂性和额外的工作。正确使用设计模式能够抵消这样的“额外工作   实例:

Abstract factory抽象工厂--对象创建型

 抽象工厂接口

Abstract factory抽象工厂--对象创建型

优点:

1.具体产品从客户代码中被分离出来

容易改变产品的系列

将一个系列的产品族统一到一起创建

缺点:

1.在产品族中扩展新的产品是很困难的,它需要修改抽象工厂的接口

转载于:https://www.cnblogs.com/-Titanium/p/10643890.html

继续阅读