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