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