簡單工廠和抽象工廠有什麼不同?
(相關推薦:java面試題)
#簡單工廠模式:
這個模式本身很簡單而且使用在業務較簡單的情況下。一般用於小型專案或具體產品很少擴展的情況(這樣工廠類別才不用經常更改)。
它由三個角色組成:
工廠類別角色:這是本模式的核心,含有一定的商業邏輯和判斷邏輯,根據邏輯不同,產生具體的工廠產品。如範例中的Driver類別。
抽象產品角色:它一般是特定產品繼承的父類別或實作的介面。由介面或抽象類別來實作。如例中的Car接口。
具體產品角色:工廠類別所建立的物件就是此角色的實例。在java中由一個具體類別實現,如範例中的Benz、Bmw類別。
(推薦學習:java入門程式)
#來用類別圖來清晰的表示下的它們之間的關係:
抽象工廠模式:
先認識下什麼是產品族: 位於不同產品等級結構中,功能相關聯的產品組成的家族。
圖中的BmwCar和BenzCar就是兩個產品樹(產品層次結構);而如圖所示的BenzSportsCar和BmwSportsCar就是一個產品族。他們都可以放到跑車家族中,因此功能有所關聯。同理BmwBussinessCar和BenzBusinessCar也是一個產品族。
可以這麼說,它和工廠方法模式的差別就在於需要創建物件的複雜程度。而且抽象工廠模式是三個裡面最抽象、最具一般性的。抽象工廠模式的用意為:給客戶端提供一個接口,可以建立多個產品族中的產品物件。
而且使用抽象工廠模式還要滿足一下條件:
1、系統中有多個產品族,而係統一次只可能消費其中一族產品
2、同屬於同一個產品族的產品以其使用。
(影片教學推薦:java影片教學)
我們來看看抽象工廠模式的各個角色(和工廠方法的如出一轍):
抽象工廠角色: 這是工廠方法模式的核心,它與應用程式無關。是具體工廠角色必須實作的介面或是必須繼承的父類別。在java中它是由抽象類別或介面來實作。
具體工廠角色:它含有和具體業務邏輯相關的程式碼。由應用程式呼叫以建立對應的特定產品的物件。在java中它是由具體的類別來實作。
抽象產品角色:它是特定產品繼承的父類別或是實作的介面。在java中一般有抽象類別或介面來實作。
具體產品角色:特定工廠角色所建立的物件就是此角色的實例。在java中由具體的類別來實作。
以上是2020全新Java面試題-設計模式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。