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

2021-10-01 11:47:07 字數 791 閱讀 5717

工廠方法模式適用於產品種類結構單一的場合,為一類產品提供建立的介面;

抽象工廠方法適用於產品種類結構多的場合,主要用於建立一組(有多個種類)相關的產品,為它們提供建立的介面

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

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

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

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;

}

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

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

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

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

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

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