搜尋
首頁Javajava教程java工廠模式

java工廠模式

Dec 15, 2016 pm 01:51 PM
java工廠模式

java工廠模式分為三種:簡單工廠模式、工廠方法模式、抽象工廠模式。

簡單工廠模式(Simple Factory Pattern)屬於類別的創新模式,又叫靜態工廠方法模式(Static FactoryMethod Pattern),是透過專門定義一個類別來負責創建其他類別的實例,被創建的實例通常都具有共同的父類。

簡單工廠模式就是透過一個"全能類",根據外界傳遞的訊息來決定創建哪個具體類別的物件。如下圖

java工廠模式

透過一個簡單工廠類,根據name建立對應的產品物件。

 

簡單工廠模式嚴重違背了“開閉原則”,難以拓展,由此產生了工廠方法模式。

工廠方法模式(FACTORY METHOD)是對簡單工廠模式進行了抽象化,符合“開閉原則”,實現了可擴展。

工廠方法(Factory Method)模式的意義是定義一個創建產品對象的工廠接口,將實際創建工作推遲到子類當中。核心工廠類別不再負責產品的創建,這樣核心類別成為一個抽象工廠角色,僅負責具體工廠子類別必須實現的接口,這樣進一步抽象化的好處是使得工廠方法模式可以使系統在不修改具體工廠角色的情況下引進新的產品。

工廠方法模式使用場景:

如組裝手機的代工廠。從手機原料工廠取得外殼、顯示器、主機板、按鍵、電池等配件進行組裝。組裝手機工廠只負責手機的組裝,而不負責配件的生產,也不需要關心從手機原料工廠出來的配件是否改變,只要手機各個配置銜接的介面不變就行。例如原料工廠顯示器從TFT 的換成了UFB的顯示屏,對於組裝手機的代工廠來說,只要介面沒變,只要繼續組裝就行。

如下圖,首先建立一個原料工廠接口,原料工廠接口分別定義了創建外殼、顯示器、主機板、電池的方法。

java工廠模式

 LB手機原料工廠負責提供LB手機所需的配件,電池、TFT顯示器、主機板、皮革外殼。

java工廠模式

下面是手機裝配廠的接口,裝配廠只負責從原料工廠獲取配件並裝配成新的手機,其他的概不負責。

java工廠模式

 LB手機組裝廠,負責組裝LB原料廠提供的配件。當然,偶爾也接接私活,組裝其它手機廠的手機。

java工廠模式

java工廠模式

LB手機銷售很火,在全國各地都有了組裝廠。有一天LB手機的螢幕突然要進行更換了,從TFT顯示器變更成UFT顯示器。牽一發而動全身,這時候就體現了工廠方法模式的好處。無論LB手機的配置如何變更,對於組裝廠來說,createDisplay()介面依然不變。這樣只需要原料工廠的顯示器從提供TFT顯示器更換為UFT顯示器就行。

工廠模式的好處就在於提供創建的產品介面給使用者就行,無論產品的類型如何變化,只要根據介面創建的產品的功能沒有變化,使用者就無須做任何變動。

很多介紹工廠方法模式的都是將工廠模式的用法列出來,而並沒有具體介紹何時使用。初看時覺得工廠方法模式屬於多餘,增加了繁雜性,後來慢慢熟悉了工廠方法模式的用處,又重新翻閱了一遍《Head First Design Patterns》鞏固一下。特模擬一個場景結合理論記錄下來,希望能鞏固理解。



更多java工廠模式相關文章請關注PHP中文網!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
JVM如何促進Java的'寫作一次,在任何地方運行”(WORA)功能?JVM如何促進Java的'寫作一次,在任何地方運行”(WORA)功能?May 02, 2025 am 12:25 AM

JVM通過字節碼解釋、平台無關的API和動態類加載實現Java的WORA特性:1.字節碼被解釋為機器碼,確保跨平台運行;2.標準API抽像操作系統差異;3.類在運行時動態加載,保證一致性。

Java的較新版本如何解決平台特定問題?Java的較新版本如何解決平台特定問題?May 02, 2025 am 12:18 AM

Java的最新版本通過JVM優化、標準庫改進和第三方庫支持有效解決平台特定問題。 1)JVM優化,如Java11的ZGC提升了垃圾回收性能。 2)標準庫改進,如Java9的模塊系統減少平台相關問題。 3)第三方庫提供平台優化版本,如OpenCV。

說明JVM執行的字節碼驗證的過程。說明JVM執行的字節碼驗證的過程。May 02, 2025 am 12:18 AM

JVM的字節碼驗證過程包括四個關鍵步驟:1)檢查類文件格式是否符合規範,2)驗證字節碼指令的有效性和正確性,3)進行數據流分析確保類型安全,4)平衡驗證的徹底性與性能。通過這些步驟,JVM確保只有安全、正確的字節碼被執行,從而保護程序的完整性和安全性。

平台獨立性如何簡化Java應用程序的部署?平台獨立性如何簡化Java應用程序的部署?May 02, 2025 am 12:15 AM

Java'splatFormIndepentEncealLowsApplicationStorunonAnyOperatingsystemwithajvm.1)singleCodeBase:writeandeandcompileonceforallplatforms.2)easileupdates:updatebybytecodeforsimultanane deployment.3)testOnOneOnePlatForforurouniverSalpeforuluniverSalpehavior formafforulululyiversalivernave.444.44.444

Java的平台獨立性如何隨著時間的流逝而發展?Java的平台獨立性如何隨著時間的流逝而發展?May 02, 2025 am 12:12 AM

Java的平台獨立性通過JVM、JIT編譯、標準化、泛型、lambda表達式和ProjectPanama等技術不斷增強。自1990年代以來,Java從基本的JVM演進到高性能的現代JVM,確保了代碼在不同平台的一致性和高效性。

在Java應用程序中緩解平台特定問題的策略是什麼?在Java應用程序中緩解平台特定問題的策略是什麼?May 01, 2025 am 12:20 AM

Java如何緩解平台特定的問題? Java通過JVM和標準庫來實現平台無關性。 1)使用字節碼和JVM抽像操作系統差異;2)標準庫提供跨平台API,如Paths類處理文件路徑,Charset類處理字符編碼;3)實際項目中使用配置文件和多平台測試來優化和調試。

Java的平台獨立性與微服務體系結構之間有什麼關係?Java的平台獨立性與微服務體系結構之間有什麼關係?May 01, 2025 am 12:16 AM

java'splatformentenceenhancesenhancesmicroservicesharchitecture byferingDeploymentFlexible,一致性,可伸縮性和便攜性。 1)DeploymentFlexibilityAllowsibilityAllowsOllowsOllowSorlowsOllowsOllowsOllowSeStorunonAnyPlatformwithajvM.2)penterencyCrossServAccAcrossServAcrossServiCessImplifififiesDeevelopmentandeDe

GRAALVM與Java的平台獨立目標有何關係?GRAALVM與Java的平台獨立目標有何關係?May 01, 2025 am 12:14 AM

GraalVM通過三種方式增強了Java的平台獨立性:1.跨語言互操作,允許Java與其他語言無縫互操作;2.獨立的運行時環境,通過GraalVMNativeImage將Java程序編譯成本地可執行文件;3.性能優化,Graal編譯器生成高效的機器碼,提升Java程序的性能和一致性。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

MantisBT

MantisBT

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

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。