日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

抽象工厂模式

發布時間:2023/12/14 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 抽象工厂模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是抽象工廠

抽象工廠模式(Abstract Factory Pattern)是一種軟件開發設計模式。抽象工廠模式提供了一種方式,可以將一組具有同一主題的單獨的工廠封裝起來。如果比較抽象工廠模式和工廠模式,我們不難發現前者只是在工廠模式之上增加了一層抽象的概念。抽象工廠是一個父類工廠,可以創建其它工廠類。所以我們也叫它 “工廠的工廠”。

抽象工廠模式類圖

現在,假設我們有 A、B 兩個廚房。每個廚房擁有的餐具和食品都不一樣,但是用戶搭配使用的方式,比如刀子和蘋果、杯子和牛奶等等,我們假設是一致的。

示例代碼

//具體餐具knif如下 class Knife implements TableWare{public String getToolName(){return "knife";} }//以具體工Akitchen為例 class AKitchen implements KitchenFactory{public Food getFood(){return new Apple();}public TableWare getTableWare(){return new Knife();} }//吃貨要開吃了 public class Foodaholic{public void eat(KitchenFactory k){System.out.println("A foodaholic is eating "+k.getFood().getFoodName()+" with "+k.getTableWare().getToolName());}public static void main(String[] args){Foodaholic fh = new Foodaholic();KitchenFactory kf = new AKitchen();fh.eat(kf);} }

打開terminal,輸入命令編譯并運行:

javac Foodaholic.java java Foodaholic

運行結果:

shiyanlou:project/ $ javac Foodaholic.java [17:16:37] shiyanlou:project/ $ java Foodaholic [17:16:51] A foodaholic is eating apple with knife

抽象工廠模式應用

抽象工廠模式特別適合于這樣的一種產品結構:產品分為幾個系列,在每個系列中,產品的布局都是類似的,在一個系列中某個位置的產品,在另一個系列中一定有一個對應的產品。這樣的產品結構是存在的,這幾個系列中同一位置的產品可能是互斥的,它們是針對不同客戶的解決方案,每個客戶都只選擇其一。

工廠方法模式與抽象工廠模式區別

為了解釋得更清楚,先介紹兩個概念:

產品等級結構:比如一個抽象類是食物,其子類有蘋果、牛奶等等,則抽象食物與具體食物名稱之間構成了一個產品等級結構。食物是抽象的父類,而具體的食物名稱是其子類。產品族:在抽象工廠模式中,產品族是指由同一個工廠生產的,位于不同產品等級結構中的一組產品。如 AKitchen 生產的蘋果、刀子,蘋果屬于食物產品等級結構中,而刀子則屬于餐具產品等級結構中。而 BKitchen 可能生成另一組產品,如牛奶、杯子。

因此工廠方法模式、抽象工廠模式最大的區別在于:

工廠方法模式:針對的是 一個產品等級結構。

抽象工廠模式:針對 多個產品等級結構。

總結

以上是生活随笔為你收集整理的抽象工厂模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。