工廠方法模式是類的建立模式,又叫做虛擬構造子模式或多型性工廠模式。它的用意是定義乙個建立產品物件的工廠介面,將實際建立工作推遲到子類中。
簡單工廠模式的缺點:
由於工廠類集中了所有產品建立邏輯的,如果不能正常工作的話會對系統造成很大的影響。如果增加新產品必須修改工廠角色的原始碼。
工廠方法模式的優點:
在工廠方法模式中,核心的工廠類不再負責所有的產品的建立,而是將建立的工作交給子類去做。這個核心類成為乙個抽象工廠的角色,僅負責給出具體工廠子類必須實現的介面,而不接觸哪乙個產品類例項化的細節。這使得工廠方法模式可以允許系統在不修改具體工廠角色的情況下引進新的產品,使其具有超越簡單工廠模式的優越性。
以下面情況為例討論該模式的具體實現:
抽象工廠角色(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 描述
說簡單工廠模式時,我們講到,如果需要新增乙個乘法運算子應該怎麼做的問題,解決這個問題,需要用到工廠方法模式。工廠方法模式,定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。工廠方法使乙個類的例項化延遲到其子類,結構圖如下 實現如下 includeusing namespace std class...
C 設計模式 工廠方法模式
問題描述 之前講到了c 設計模式 簡單工廠模式,由於簡單工廠模式的侷限性,比如 工廠現在能生產producta productb和productc三種產品了,此時,需要增加生產productd產品 那麼,首先是不是需要在產品列舉型別中新增新的產品型別標識,然後,修改factory類中的switch結...
C 設計模式 工廠方法模式
問題描述 之前講到了c 設計模式 簡單工廠模式,由於簡單工廠模式的侷限性,比如 工廠現在能生產producta productb和productc三種產品了,此時,需要增加生產productd產品 那麼,首先是不是需要在產品列舉型別中新增新的產品型別標識,然後,修改factory類中的switch結...