工廠方法模式適用於產品種類結構單一的場合,為一類產品提供建立的介面;
抽象工廠方法適用於產品種類結構多的場合,主要用於建立一組(有多個種類)相關的產品,為它們提供建立的介面
前面我們寫過的工廠模式實際上是對產品的抽象。對於不同的使用者需求,我們可以給予不同的產品,而且這些產品的介面都是一致的。而抽象工廠呢?顧名思義,就是說我們的工廠是不一定的。怎麼理解呢,舉個例子。
假設有兩個水果店都在賣水果,都賣蘋果和葡萄。其中乙個水果店買白蘋果和白葡萄,另外乙個水果店賣紅蘋果和紅葡萄。所以說,對於水果店而言,儘管都在賣水果,但是兩個店賣的品種不一樣。
既然水果不一樣,那我們先定義水果
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語言和設計模式(抽象工廠模式)
前面我們寫過的工廠模式實際上是對產品的抽象。對於不同的使用者需求,我們可以給予不同的產品,而且這些產品的介面都是一致的。而抽象工廠呢?顧名思義,就是說我們的工廠是不一定的。怎麼理解呢,舉個例子。假設有兩個水果店都在賣水果,都賣蘋果和葡萄。其中乙個水果店買白蘋果和白葡萄,另外乙個水果店賣紅蘋果和紅葡萄...