天天看點

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

繼續閱讀