(三)抽象工廠模式

2021-08-02 06:31:12 字數 2516 閱讀 9766

一,抽象工廠的出現

由於簡單工廠不能應對「不同系列物件」的變化。比如有不同風格的場景—對應不同

風格的道路,房屋、地道、、、、。

二、 抽象工廠的具體實現

例如:絕味鴨脖想在江西、南昌和上海開分店,但是由於當地人的口味不同,在南昌

的所有絕味的東西會做的比較辣一些,而上海不喜歡吃辣的,所以上海不會做成像南昌

那麼的辣,這導致南昌絕味工廠和上海絕味工廠生產所有絕味產品不同,也就是某個

具體工廠負責一系列產品的口味不同。

/**

* 下面以絕味鴨脖連鎖店為例子,演示抽象工廠模式

* 因為每個地方喜歡的口味不同,有些地方喜歡辣點的,有的地方不喜歡吃辣

* * 客戶端呼叫.

*/public

class

client

}/**

* 抽象工廠,提供不同地方鴨架和鴨脖的介面.

*/public

abstract

class

abstractfactory

/** *南昌絕味工廠製作南昌的鴨脖和鴨架.

*/public

class

nanchangfactory

extends

abstractfactory

@override

public yajia createyajia()

}/**

* 上海絕味工廠,負責製作上海的鴨脖和鴨架.

*/public

class

shanghaifactory

extends

abstractfactory

//製作上海鴨架

@override

public yajia createyajia()

}/**

* 鴨脖抽象類,供每個地方實現類繼承

*/public

abstract

class

yabo

/** * 鴨架抽象類,供每個地方的鴨架類繼承.

*/public

abstract

class

yajia

/** * 南昌鴨脖,因為南昌喜歡吃辣,所以製作的鴨脖比上海製作的鴨脖辣.

*/public

class

nanchangyabo

extends

yabo

}/**

* 南昌鴨架.

*/public

class

nanchangyajia

extends

yajia

}/**

* 上海的鴨脖,沒有南昌鴨脖做的辣.

*/public

class

shanghaiyabo

extends

yabo

}/**

* 上海的鴨架.

*/public

class

shanghaiyajia

extends

yajia

}

三、抽象工廠模式的定義和類圖

1,抽象工廠應對需求變更

看完上面抽象工廠的實現之後,如果 「絕味」公司又想在湖南開一家分店怎麼辦呢? 因為湖南人喜歡吃麻辣的,

下面就具體看看應用了抽象工廠模式的系統是如何應對這種需求的。

/**

* 如果絕味又想開一家湖南的分店時,因為湖南喜歡吃麻的

* 所以這是有需要有一家湖南的工廠專門製作.

*/public

class

hunanfactory

extends

abstractfactory

@override

public yajia createyajia()

}/**

* 湖南鴨脖.

*/public

class

hunanyabo

extends

yajia

}/**

* 湖南的鴨架.

*/public

class

hunanyajia

extends

yajia

}

四、抽象工廠的優缺點優點:抽象工廠模式將具體產品的建立延遲到具體工廠的子類中,這樣將物件的建立

封裝起來,可以減少客戶端與具體產品類之間的依賴,從而降低系統耦合度,這樣有

利於後期的維護和擴充套件。

缺點:抽象工廠很難支援新品種的變化。這是因為抽象工廠中的介面已經確定可以被

建立的產品集合,如果需要新增新產品,此時就必須修改抽象工廠的介面,這樣就違

背了「開放-封閉」原則。

工廠模式三 抽象工廠模式

抽象工廠模式可以用來生產不同產品族的全部產品。對於新增加的產品,無能為力 但是支援增加產品族 抽象工廠模式其實是工廠方法模式的公升級版本,在有多個業務品種和分類時,通過抽象工廠模式產生需要的物件是一種非常好的解決方案。首先建立發動機引擎的介面與不同層次引擎的實現類 public inte ce en...

三)工廠模式 抽象工廠模式

1 工廠模式介紹建立型設計模式,結構簡單的模式,建立物件的介面,讓子類決定例項化哪個類 2 工廠模式使用場景 在任何需要生成複雜物件的地方,都可以使用,用new就可以生成就無需使用 3 工廠模式的組成 分為四大模組,一是抽象工廠,為工廠方法模式的核心,二是具體工廠,實現具體的業務邏輯,三是抽象產品,...

三 抽象工廠模式

抽象工廠模式可以向客戶端提供乙個介面,使得客戶端在不必指定類例項的具體型別的情況下,能夠建立多個類例項族的類例項物件。public inte ce fruitfactory其中包括公共的抽象角色和具體類的進一步抽象。public inte ce fruitpublic abstract class ...