創(chuàng)建設(shè)計(jì)模式:用戶(hù)創(chuàng)建對(duì)象時(shí)的模式俄周。
1.單例模式
定義:只會(huì)創(chuàng)建一個(gè)對(duì)象實(shí)例
特點(diǎn):存在一個(gè)靜態(tài)成員保存實(shí)例對(duì)象 / 外部類(lèi)使用只有唯一入口getInstance這個(gè)方法 / clone方法禁止使用
使用場(chǎng)景:比如數(shù)據(jù)庫(kù)類(lèi)實(shí)例沪铭,我們只希望它被創(chuàng)建一次,然后在需要使用到類(lèi)實(shí)例的地DB::getInstance(1)即可;
2.工廠(chǎng)模式
定義:確實(shí)是對(duì)象實(shí)例的生產(chǎn)工廠(chǎng)
特點(diǎn):子類(lèi)需要繼承工廠(chǎng)類(lèi) / 由工廠(chǎng)類(lèi)調(diào)用自身靜態(tài)方法判斷具體實(shí)例化的對(duì)象
使用場(chǎng)景:多種支付方式的添加绳泉,如項(xiàng)目剛起步只用戶(hù)微信支付逊抡,后續(xù)添加了支付寶姆泻,銀行卡等零酪。具體有哪種支付方式,可以創(chuàng)建一個(gè)工廠(chǎng)類(lèi)拇勃,由用戶(hù)的選擇去實(shí)例化具體的支付方式
3.抽象工廠(chǎng)方式
定義:創(chuàng)建一個(gè)約束接口四苇,相關(guān)功能去按照接口規(guī)范實(shí)現(xiàn)這個(gè)接口達(dá)到統(tǒng)一
特點(diǎn):有一個(gè)總的抽獎(jiǎng)?lì)?/ 具體的行為交給相關(guān)的工廠(chǎng) / 總的調(diào)度是由最后的product來(lái)實(shí)現(xiàn)
使用場(chǎng)景:可同工廠(chǎng)方法一樣使用,抽象工廠(chǎng)模式是工廠(chǎng)模式的改良
4.建造者模式(生成器模式)
定義:對(duì)象實(shí)例是由多個(gè)分散的零件組成
特點(diǎn):Product產(chǎn)品類(lèi):通常是實(shí)現(xiàn)了模板方法模式,也就是有模板方法和基本方法 /?Builder抽象建造者:規(guī)范產(chǎn)品的組件,一般是由子類(lèi)實(shí)現(xiàn)/?ConcreteBuilder具體建造者:實(shí)現(xiàn)抽象類(lèi)定義的所有方法缀辩,并且返回一個(gè)組建好的對(duì)象/Director導(dǎo)演類(lèi):負(fù)責(zé)安排已有模塊的順序劲件,然后告訴Builder開(kāi)始建造
使用場(chǎng)景:相同的方法,不同的執(zhí)行順序棠涮,產(chǎn)生不同的事件結(jié)果時(shí),可以采用建造者模式/多個(gè)部件或零件,都可以裝配到一個(gè)對(duì)象中妓肢,但是產(chǎn)生的運(yùn)行結(jié)果又不相同時(shí),則可以使用該模式/產(chǎn)品類(lèi)非常復(fù)雜苫纤,或者產(chǎn)品類(lèi)中的調(diào)用順序不同產(chǎn)生了不同的效能碉钠,這個(gè)時(shí)候使用建造者模式非常合適/在對(duì)象創(chuàng)建過(guò)程中會(huì)使用到系統(tǒng)中的一些其他對(duì)象,這些對(duì)象在產(chǎn)品對(duì)象的創(chuàng)建過(guò)程中不易得到時(shí)卷拘,也可以采用建造者模式封裝該對(duì)象的創(chuàng)建過(guò)程
5.原型模式
定義:原型模式是先創(chuàng)建好一個(gè)原型對(duì)象喊废,然后通過(guò)clone原型對(duì)象來(lái)創(chuàng)建新的對(duì)象
特點(diǎn):提供一個(gè)拷貝對(duì)象方法
使用場(chǎng)景:PHP是解釋性語(yǔ)言,每次運(yùn)行腳本都要重新加載變量栗弟,原型模式可以緩解壓力