首頁  >  文章  >  Java  >  2020全新Java面試題-設計模式

2020全新Java面試題-設計模式

王林
王林轉載
2020-06-22 17:19:302151瀏覽

2020全新Java面試題-設計模式

簡單工廠和抽象工廠有什麼不同?

(相關推薦:java面試題

#簡單工廠模式:

這個模式本身很簡單而且使用在業務較簡單的情況下。一般用於小型專案或具體產品很少擴展的情況(這樣工廠類別才不用經常更改)。

它由三個角色組成:

  • 工廠類別角色:這是本模式的核心,含有一定的商業邏輯和判斷邏輯,根據邏輯不同,產生具體的工廠產品。如範例中的Driver類別。

  • 抽象產品角色:它一般是特定產品繼承的父類別或實作的介面。由介面或抽象類別來實作。如例中的Car接口。

  • 具體產品角色:工廠類別所建立的物件就是此角色的實例。在java中由一個具體類別實現,如範例中的Benz、Bmw類別。

(推薦學習:java入門程式

#來用類別圖來清晰的表示下的它們之間的關係:

2020全新Java面試題-設計模式

抽象工廠模式:

先認識下什麼是產品族: 位於不同產品等級結構中,功能相關聯的產品組成的家族。

2020全新Java面試題-設計模式

圖中的BmwCar和BenzCar就是兩個產品樹(產品層次結構);而如圖所示的BenzSportsCar和BmwSportsCar就是一個產品族。他們都可以放到跑車家族中,因此功能有所關聯。同理BmwBussinessCar和BenzBusinessCar也是一個產品族。

可以這麼說,它和工廠方法模式的差別就在於需要創建物件的複雜程度。而且抽象工廠模式是三個裡面最抽象、最具一般性的。抽象工廠模式的用意為:給客戶端提供一個接口,可以建立多個產品族中的產品物件。

而且使用抽象工廠模式還要滿足一下條件:

1、系統中有多個產品族,而係統一次只可能消費其中一族產品

2、同屬於同一個產品族的產品以其使用。

(影片教學推薦:java影片教學

我們來看看抽象工廠模式的各個角色(和工廠方法的如出一轍):

  • 抽象工廠角色: 這是工廠方法模式的核心,它與應用程式無關。是具體工廠角色必須實作的介面或是必須繼承的父類別。在java中它是由抽象類別或介面來實作。

  • 具體工廠角色:它含有和具體業務邏輯相關的程式碼。由應用程式呼叫以建立對應的特定產品的物件。在java中它是由具體的類別來實作。

  • 抽象產品角色:它是特定產品繼承的父類別或是實作的介面。在java中一般有抽象類別或介面來實作。

  • 具體產品角色:特定工廠角色所建立的物件就是此角色的實例。在java中由具體的類別來實作。

#

以上是2020全新Java面試題-設計模式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除