工廠方法模式是類的建立模式,又叫做虛擬構造子模式或多型性工廠模式。它的用意是定義乙個建立產品物件的工廠介面,將實際建立工作推遲到子類中。
簡單工廠模式的缺點:
由於工廠類集中了所有產品建立邏輯的,如果不能正常工作的話會對系統造成很大的影響。如果增加新產品必須修改工廠角色的原始碼。
工廠方法模式的優點:
在 工廠方法模式中,核心的工廠類不再負責所有的產品的建立,而是將建立的工作交給子類去做。這個核心類成為乙個抽象工廠的角色,僅負責給出具體工廠子類必須 實現的介面,而不接觸哪乙個產品類例項化的細節。這使得工廠方法模式可以允許系統在不修改具體工廠角色的情況下引進新的產品,使其具有超越簡單工廠模式的 優越性。
以下面情況為例討論該模式的具體實現:
抽象工廠角色(creator):擔任工廠方法模式的核心,規定建立物件的工廠類應該實現的介面。
具體工廠角色(conceretecreator):負責具體產品物件的建立,實現creator規定的介面。
抽象產品角色(product):工廠方法模式所建立物件的超型別,規定產品應具有的介面。
具體產品角色(concreteproduct):實現product所規定的介面。
示例**如下:
creator:
public
inte***ce creator
concretecreator1:
class concretecreator1:creator
} concretecreator2:
class concretecreator2:creator
} product:
public
inte***ce product
concreteproduct1:
class
concreteproduct1:product
}concreteproduct2:
class concreteproduct2:product
}client:
class
client
}總的來說,與簡單工廠模式相比,我認為就是把簡單工廠模式中的工廠類一分為二,成了工廠模式中的抽象工廠角色類和具體工廠角色類,以達到"
核心的工廠類不再負責所有的產品的建立,而是將建立的工作交給子類去做"的效果
C 設計模式 工廠方法模式
問題描述 之前講到了c 設計模式 簡單工廠模式,由於簡單工廠模式的侷限性,比如 工廠現在能生產producta productb和productc三種產品了,此時,需要增加生產productd產品 那麼,首先是不是需要在產品列舉型別中新增新的產品型別標識,然後,修改factory類中的switch結...
C 設計模式 工廠方法模式
問題描述 之前講到了c 設計模式 簡單工廠模式,由於簡單工廠模式的侷限性,比如 工廠現在能生產producta productb和productc三種產品了,此時,需要增加生產productd產品 那麼,首先是不是需要在產品列舉型別中新增新的產品型別標識,然後,修改factory類中的switch結...
C 設計模式 工廠方法模式
abstract class product class concreteproducta product class concreteproductb product abstract class factory class concreteafactory factory class concr...