工廠模式是一種創建型設計模式,它提供了一種統一的方式來創建對象,而不用直接實例化對象。工廠模式可以隱藏對象創建的細節,客戶端只需要調用工廠的方法就可以獲取所需的對象。
工廠模式有三種不同的變體:簡單工廠模式、工廠方法模式和抽象工廠模式。
簡單工廠模式又稱為靜態工廠模式,它由一個工廠類負責創建所有的對象。客戶端只需要調用工廠類的靜態方法,傳入相應的參數,就可以獲取所需的對象。簡單工廠模式違反了開閉原則,因為每次新增一個對象時,都需要修改工廠類的代碼。
工廠方法模式將對象的創建委托給子類,每個子類負責創建一個具體的對象。客戶端只需要調用相應的工廠子類,就可以獲取所需的對象。工廠方法模式符合開閉原則,因為新增一個對象時,只需要新增一個工廠子類即可。
抽象工廠模式是工廠方法模式的升級版,它用于創建一組相關或相互依賴的對象。抽象工廠模式由一個抽象工廠類負責定義創建對象的接口,具體的工廠子類負責實現這些接口。客戶端只需要調用抽象工廠類的方法,就可以獲取一組相關的對象。
工廠模式的優點包括:
封裝了對象的創建過程,隱藏了具體的實現細節。
降低了客戶端和對象之間的耦合度,客戶端只需要關心接口而不需要關心具體的實現。
符合開閉原則,新增一個對象時,只需要新增一個工廠子類即可。
工廠模式的缺點包括:
增加了系統的復雜度,需要創建更多的類。
違反了依賴倒置原則,客戶端依賴于具體的工廠類。
工廠模式在實際應用中廣泛使用,特別是在需要根據不同的條件創建不同的對象時,工廠模式可以提供一種靈活的解決方案。