創(chuàng)建類模式主要關(guān)注對(duì)象的創(chuàng)建過(guò)程,將對(duì)象的創(chuàng)建過(guò)程進(jìn)行封裝,使客戶端可以直接得到對(duì)象,而不用去關(guān)心如何創(chuàng)建對(duì)象。創(chuàng)建類模式有5種,分別是:
為什么需要?jiǎng)?chuàng)建性模式
首先,在編程中,對(duì)象的創(chuàng)建通常是一件比較復(fù)雜的事,因?yàn)椋瑸榱诉_(dá)到降低耦合的目的,我們通常采用面向抽象編程的方式,對(duì)象間的關(guān)系不會(huì)硬編碼到類中,而是等到調(diào)用的時(shí)候再進(jìn)行組裝,這樣雖然降低了對(duì)象間的耦合,提高了對(duì)象復(fù)用的可能,但在一定程度上將組裝類的任務(wù)都交給了最終調(diào)用的客戶端程序,大大增加了客戶端程序的復(fù)雜度。采用創(chuàng)建類模式的優(yōu)點(diǎn)之一就是將組裝對(duì)象的過(guò)程封裝到一個(gè)單獨(dú)的類中,這樣,既不會(huì)增加對(duì)象間的耦合,又可以最大限度的減小客戶端的負(fù)擔(dān)。
其次,使用普通的方式創(chuàng)建對(duì)象,一般都是返回一個(gè)具體的對(duì)象,即所謂的面向?qū)崿F(xiàn)編程,這與設(shè)計(jì)模式原則是相違背的。采用創(chuàng)建類模式則可以實(shí)現(xiàn)面向抽象編程。客戶端要求的只是一個(gè)抽象的類型,具體返回什么樣的對(duì)象,由創(chuàng)建者來(lái)決定。
再次,可以對(duì)創(chuàng)建對(duì)象的過(guò)程進(jìn)行優(yōu)化,客戶端關(guān)注的只是得到對(duì)象,對(duì)對(duì)象的創(chuàng)建過(guò)程則不關(guān)心,因此,創(chuàng)建者可以對(duì)創(chuàng)建的過(guò)程進(jìn)行優(yōu)化,例如在特定條件下,如果使用單例模式或者是使用原型模式,都可以優(yōu)化系統(tǒng)的性能。
總結(jié)
所有的創(chuàng)建類模式本質(zhì)上都是對(duì)對(duì)象的創(chuàng)建過(guò)程進(jìn)行封裝。