2016-03-03 79 views
2

我對「工廠相關」設計模式及其OOP實現的理解一直非常簡單。什麼是OOP工廠

  • 「工廠方法」是具有接口(或一個抽象類)作爲返回類型和構造實現基於某些內部邏輯此接口的對象類內的方法。
  • 一個「工廠」是隻包含工廠方法的類
  • 「抽象工廠」是一個接口(或抽象類),僅包含工廠方法

但我最近無意中發現了關於這個主題的Wikipeda文章(Factory,Abstract factory),這讓我有些困惑,特別是關於什麼「工廠」是在OOP中。

下面是幾個引號:

  1. 返回一個「新」對象A的子程序可以作爲「工廠」被稱爲,如在工廠方法或工廠功能。
  2. 工廠用於各種設計模式
  3. 「抽象工廠模式」是一種建立工廠集合的方法。
  4. 甲工廠是在該對象構造

這引起一些問題的具體類的代碼中的位置:

(1)&(2)這是否意味着一個工廠不是一個階級或一個對象,而是一個邏輯?

(2)「工廠」不是一種模式嗎?

(3)這裏「收集」是什麼意思?這只是一種說法:「你可以有幾個實現相同接口的工廠(這是一個抽象工廠)」?

(4)什麼?

任何人都可以澄清這是什麼意思?我對工廠的最初理解是否正確?

+0

([摘要工廠模式和工廠方法之間的差異]的可能的複製http://stackoverflow.com/questions/5739611/差異之間抽象工廠模式和工廠法 – jaco0646

+0

)@ jaco0646,不,你提到的問題是問關於「抽象工廠」和「工廠法」,而這一次是關於「工廠」。 –

回答

3

看看這wiki它說:

在面向對象的編程(OOP),工廠是 創建其他對象的對象 - 正式工廠是返回的對象的函數或方法 從一些 方法調用,其中被假定爲「新」的變化的原型或類。[α]更廣泛地說,一個 子程序,返回一個「新」對象可以被作爲 「工廠」的簡稱,如在工廠方法或工廠功能。這是OOP中基本的 概念,並且構成了一些相關軟件設計模式的基礎。

所以具體回答你的問題:

(1)&(2),這是否意味着一個工廠不是類或對象,但一塊的邏輯?

不,這意味着您可以使用對象(工廠)創建其他對象。

(2)是 「工廠」,而不是模式本身?

有不同的設計模式出其工廠模式是其中之一。所以,當你使用一個工廠然後創建其他對象的那個圖案創建對象是「工廠模式」

+0

這正是我無法理解的。首先它說「一個工廠是一個對象」,然後「工廠是一種功能或方法」?它怎麼可能是一個對象和一個方法? –

+0

@AndreBorges: - 當你在基於類的編程使用它,然後它的類的構造函數的抽象,而在基於原型的編程是原型對象的抽象。工廠不是一種功能或方法。 –