為什么要使用工廠模式

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

image

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

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

概念還是比較晦澀難懂的,下面舉個例子說明:

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

注意,你在店員推薦之前是不知道具體的手機型號的,而是只知道你需要一臺1億像素的手機。

下面用偽代碼表示一下:

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()

如果只使用抽象類,不用工廠模式,就會把具體類暴露出來,使用:

XiaoMiPhone phone1 = new Xiaomi11
phone1.call()

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

Xiaomi11 phone1 = new Xiaomi11
phone1.call()

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

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

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

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