C語言設計模式(抽象工廠模式)

2021-10-06 04:08:19 字數 705 閱讀 4768

前面我們寫過的工廠模式實際上是對產品的抽象。對於不同的使用者需求,我們可以給予不同的產品,而且這些產品的介面都是一致的。而抽象工廠呢?顧名思義,就是說我們的工廠是不一定的。怎麼理解呢,舉個例子。

假設有兩個水果店都在賣水果,都賣蘋果和葡萄。其中乙個水果店買白蘋果和白葡萄,另外乙個水果店賣紅蘋果和紅葡萄。所以說,對於水果店而言,儘管都在賣水果,但是兩個店賣的品種不一樣。  

既然水果不一樣,那我們先定義水果。

grape; 

上面分別對蘋果和葡萄進行了抽象,當然它們的具體函式也是不一樣的。  

void print_white_grape()

void print_red_grape()

完成了水果函式的定義。下面就該定義工廠了,和水果一樣,我們也需要對工廠進行抽象處理。

typedef struct _fruitshop

fruitshop;

所以,對於賣白蘋果、白葡萄的水果店就該這樣設計了,紅蘋果、紅葡萄的水果店亦是如此。

grape* sell_white_grape() 

這樣,基本的框架就算搭建完成的,以後建立工廠的時候,

fruitshop* create_fruit_shop(int color)

else

return pfruitshop;

}

抽象工廠模式 Go語言設計模式 抽象工廠

想象一下你需要買包括運動鞋和運動服的運動套裝,大多數時候你想買同乙個工廠生產的一套運動套裝,比如nike套裝或adidas套裝。你想要的具體產品是成套的鞋子和短褲,這就是抽象工廠運用的場景,這些產品將由nike或adidas的抽象工廠建立。以下是工廠介面 以下是兩個產品介面 現在讓我們來看抽象工廠介...

C語言和設計模式(抽象工廠模式)

前面我們寫過的工廠模式實際上是對產品的抽象。對於不同的使用者需求,我們可以給予不同的產品,而且這些產品的介面都是一致的。而抽象工廠呢?顧名思義,就是說我們的工廠是不一定的。怎麼理解呢,舉個例子。假設有兩個水果店都在賣水果,都賣蘋果和葡萄。其中乙個水果店買白蘋果和白葡萄,另外乙個水果店賣紅蘋果和紅葡萄...

C語言和設計模式(抽象工廠模式)

前面我們寫過的工廠模式實際上是對產品的抽象。對於不同的使用者需求,我們可以給予不同的產品,而且這些產品的介面都是一致的。而抽象工廠呢?顧名思義,就是說我們的工廠是不一定的。怎麼理解呢,舉個例子。假設有兩個水果店都在賣水果,都賣蘋果和葡萄。其中乙個水果店買白蘋果和白葡萄,另外乙個水果店賣紅蘋果和紅葡萄...