簡體   English   中英

為什么需要基本抽象工廠抽象工廠模式?

[英]Why base abstract factory is needed Abstract factory pattern?

在抽象工廠模式中,涉及的主要實體是

  1. 抽象基地工廠
  2. 混凝土工廠各擴建抽象基地工廠
  3. 客戶代碼
  4. 基礎產品
  5. 擴展基礎產品的混凝土產品類別

我看到了各種實現,並觀察到Client代碼了解具體工廠。 根據我在不同地方看到的模式的通用定義如下

定義用於創建對象的接口,但讓子類確定要實例化的類。

根據我的觀察, createProduct在抽象工廠方法中作為抽象方法實現。 它在調用createProduct方法的地方公開了一個非抽象的公共方法,如getProduct 根據具體工廠類的運行時對象,將相應地調用createProduct

即使沒有基本的抽象工廠類,客戶代碼也可以簡單地在具體工廠類的對象上調用createProduct方法,因為具體工廠類對客戶代碼可見。

我覺得Abstract基類僅在以下情況下有用

如果我們有代碼來創建具體Factory類的對象,而這些代碼與對這些對象調用getProduct方法的代碼分開。 實例化concrete Factory classes代碼可以將工廠排入隊列,然后可以迭代稍后的隊列,並可以獲取Concrete products

請提供您寶貴的反饋意見。

客戶不應該有任何具體工廠的知識。 抽象工廠應隱藏工廠實現細節,以便在不影響客戶的情況下交換不同的工廠。

暗示AbstractFactory模式的目的是生產具體工廠的答案是完全錯誤的。 不幸的是,這種錯誤信息看似直觀,因此在SO上普遍存在錯誤的定義,其中許多具有數百種支持。

這里的答案很好地解釋了AbstractFactory; 但請注意建議重復的評論。 鏈接線程中的答案將破壞對模式的任何理解。

Abstract工廠不一定必須是抽象類,大多數時候它只是一個接口。

要使用的混凝土工廠應注入DI。 這樣,工廠的消費者就不會知道使用了哪一個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM