為什么要使用工廠模式

工廠模式是一種創(chuàng)建型模式,是為了對(duì)外隱藏內(nèi)部類。本篇文章不講概念,只用下面一張圖來(lái)回顧一下工廠模式

image

這里要提醒一點(diǎn),工廠模式對(duì)外只暴露工廠類和抽象類(也可以是接口)。

使用工廠模式的目的是既隱藏了內(nèi)部類的創(chuàng)建過程,又隱藏了具體功能的實(shí)現(xiàn)過程。

概念還是比較晦澀難懂的,下面舉個(gè)例子說(shuō)明:

你去小米店買手機(jī),這時(shí)候你只知道我要買一臺(tái)1億像素的手機(jī) ,這時(shí)候店員給你推薦了小米11,然后你買了手機(jī)去打電話發(fā)短信了。

注意,你在店員推薦之前是不知道具體的手機(jī)型號(hào)的,而是只知道你需要一臺(tái)1億像素的手機(jī)。

下面用偽代碼表示一下:

class XiaoMiStore {
   static func getPhone(xiangsu) -> XiaomiPhone {
       if (xiangsu == 1億) {
           return 小米11;
       else if (….)  {
           ….
       }
       ….
    }
}

Interface XiaomiPhone {
     func call()
     func message()
     ….
}

Class  Xiaomi11: XiaomiPhone {
    …
}

使用:

XiaoMiPhone phone1 = XIaomiStore.getPhone(1億)
phone1.call()

如果只使用抽象類,不用工廠模式,就會(huì)把具體類暴露出來(lái),使用:

XiaoMiPhone phone1 = new Xiaomi11
phone1.call()

抽象類和工廠模式都不用:

Xiaomi11 phone1 = new Xiaomi11
phone1.call()

使用抽象類就相當(dāng)于你去小米店之前知道你是要買手機(jī)還是要買吹風(fēng)機(jī)
而使用工廠模式是為了讓你省去了解每個(gè)機(jī)型特點(diǎn)的時(shí)間。
工廠模式就是讓用戶能夠根據(jù)已知的表象特征得到所需的產(chǎn)品。

歡迎關(guān)注微信公眾號(hào)查看更多高質(zhì)量文章:愛編程的大頭

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容