C 設計模式 抽象工廠模式

2021-10-23 05:16:32 字數 1290 閱讀 4756

1、為什麼要用抽象工廠模式?

工廠方法模式解決了簡單工廠模式單一工廠類職責過重的問題,但是工廠方法只提供了生產一種產品的方法,但有時我們需要乙個工廠要生產很多種產品,我們按照工廠方法模式的話就會給系統增加了很多類,因此我們可以將一系列的產品放到乙個工廠中,稱之為產品族,比如都是某一品牌的家用電器,電冰箱,電視機,空調,產品的功能不同;那麼對於不同品牌的某一種功能相同的家電,我們可以稱之為產品等級結構,比如我們可以宣告乙個電冰箱的抽象類,而將不同品牌的電冰箱,比如tcl,美的,海爾,這幾個品牌的電冰箱都稱之為同乙個產品繼承機構,那麼乙個工廠就是生產乙個產品族的產品,比如tcl電視機,tcl空調,tcl冰箱,我們可以看出,乙個產品族的各個產品是位於不同產品繼承機構的,**如下:

abstract

class 冰箱

class 海爾冰箱 : 冰箱

}

class

tcl冰箱 : 冰箱

}

abstract

class 空調

class 海爾空調:空調 

}

class

tcl空調:空調

}

abstract

class 工廠

class

tcl工廠 : 工廠

public

override 空調 getairconditioner()

}

class 海爾工廠 : 工廠

public

override 冰箱 getrefrigerator()

}

客戶端呼叫的**如下:

工廠 factory =

new 海爾工廠();

冰箱 refrigerator = factory.

getrefrigerator()

; 空調 airconditioner = factory.

getairconditioner()

; refrigerator.

createrefrigerator()

; airconditioner.

createairconditioner()

;

設計模式 C 設計模式 抽象工廠模式

設計模式 物件導向設計七大原則 設計模式 設計模式概念和分類 設計模式 c 設計模式 單例模式 設計模式 c 設計模式 工廠方法模式 設計模式 c 設計模式 抽象工廠模式 設計模式 c 設計模式 建造者模式 設計模式 c 設計模式 原型模式 抽象工廠模式包含如下角色 abstractfactory ...

c 設計模式(抽象工廠模式)

good 定義了乙個建立一系列相關或相互依賴的介面,而無需指定它們的具體類。用於交換產品系列,如access sql server 產品的具體類名被具體工廠的實現分離 例 include include include using namespace std 使用者抽象介面 class iuser ...

C 設計模式 抽象工廠模式

為建立一組相關或相互依賴的物件提供乙個介面,而且無需指定他們的具體類。抽象工廠模式是所有形態的工廠模式中最為抽象和最具一般性的一種形態。抽象工廠模式是指當有多個抽象角色時,使用的一種工廠模式。抽象工廠模式可以向客戶端提供乙個介面,使客戶端在不必指定產品的具體的情況下,建立多個產品族中的產品物件。應用...