工廠模式是一種創(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ì)量文章:愛編程的大頭