设计模式(一):工厂方法
目錄
- 概括
- 目的
- 主要解決
- 何時使用
- 使用場景
- 總結
- 三種工廠模式的對比
- 代碼示例
概括
定義一個用于創建對象的接口,讓子類決定實例化哪一個類。使用特殊的工廠方法代替對于對象構造函數的直接調用(即使用 new運算符,工廠方法 使一個類的實例化延遲到其子類。)
目的
工廠方法的目的是使得創建對象和使用對象是分離的,并且客戶端總是引用抽象工廠和抽象產品。
主要解決
主要解決接口選擇的問題。
何時使用
我們明確地計劃不同條件下創建不同實例時。
使用場景
作為一種創建類模式,在任何需要生成復雜對象的地方,都可以使用工廠方法模式。有一點需要注意的地方就是復雜對象適合使用工廠模式,而簡單對象,特別是只需要通過 new 就可以完成創建的對象,無需使用工廠模式。
總結
工廠方法,將多個具有相同功能(具體實現不相同)的不同類抽象為一個抽象類,并提供一個工廠方法代替對于對象構造函數的直接調用(只返回抽象類)??蛻舳送ㄟ^工廠方法的參數指定具體的類型,將返回的具體類當抽象類使用(無需關心具體類的實現方式)。
工廠方法可以隱藏創建產品的細節,且不一定每次都會真正創建產品,完全可以返回緩存的產品,從而提升速度并減少內存消耗。
三種工廠模式的對比
三種工廠模式都封裝了對象創建的過程,調用方通過抽象工廠獲取抽象產品,調用方只使用抽象產品。
簡單工廠:所有產品都由一個工廠創建,根據參數創建不同產品,因此每次添加新產品,都需要修改工廠的方法。
工廠方法:每個產品都有相應的工廠實現了,由調用方決定使用實例化哪個工廠。工廠方法的工廠用來創建一種產品(如:鼠標工廠創建鼠標、鍵盤工廠鍵盤)。
抽象工廠:工廠方法的增強,每個工廠可以創建一系列相關的產品(如小米工廠可以創建小米鼠標、小米鍵盤; 華為工廠可以創建華為鼠標,華為鍵盤)??梢哉J為抽象工廠是對工廠方法的組合。
代碼示例
- 步驟一
創建一個接口
- 步驟二
創建實現接口的實體類
- 步驟三
創建一個工廠,生成基于給定信息的實體類的對象。
- 步驟四
使用該工廠,通過傳遞類型信息來獲取實體類的對象。
- 步驟五
執行程序,輸出結果:
Inside Circle::draw() method.
Inside Rectangle::draw() method.
Inside Square::draw() method.
總結
以上是生活随笔為你收集整理的设计模式(一):工厂方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 优酷电脑免更新版(优酷电脑版旧版)
- 下一篇: 还在为了怎么组装电脑苦恼吗为什么要自己组