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