設計模式(9)——創建型模式之工廠方法
- 工廠方法
- 作用
- 結構
- 偽代碼
- 適用場景
工廠方法
作用
工廠方法是一種創建型設計模式,其在父類中提供一個創建對象的方法,允許子類決定實例化對象的類型。
結構
- 產品(Product)將會對接口進行聲明。對于所有由創建者及其子類構建的對象,這些接口都是通用的。
- 具體產品(Concrete Products)是產品接口的不同實現。
- 創建者(Creator)類聲明返回產品對象的工廠方法。該方法的返回對象類型必須與產品接口相匹配。
- 具體創建者(Concrete Creators) 將會重寫基礎工廠方法,使其返回不同類型的產品。
可以在創建者(Creator)中聲明抽象方法,由具體創建者(Concrete Creators)以不同的實現返回產品(Product)對象;也可以在創建者(Creator)中返回默認的產品(Product)對象。
偽代碼
以下示例演示了如何使用工廠方法開發跨平臺UI(用戶界面)組件,并同時避免客戶代碼與具體 UI 類之間的耦合。基礎對話框類使用不同的UI 組件渲染窗口。在不同的操作
系統下, 這些組件外觀或許略有不同, 但其功能保持一致。Windows 系統中的按鈕在 Linux 系統中仍然是按鈕。
如果使用工廠方法,就不需要為每種操作系統重寫對話框邏輯。如果我們聲明了一個在基本對話框類中生成按鈕的工廠方法,那么我們就可以創建一個對話框子類,并使其通過工
廠方法返回Windows 樣式按鈕。子類將繼承對話框基礎類的大部分代碼,同時在屏幕上根據 Windows 樣式渲染按鈕。
// Button作為產品接口,將聲明所有具體產品都必須實現的操作。