今天來點(diǎn)干貨,今天由于某些緣由沒有看哪一個關(guān)于1些面試的題,反而看了1點(diǎn)關(guān)于后幾天要做的設(shè)計(jì)模式的東西,大神神馬的可以繞到了,我就是簡單說說我的見解,畢竟關(guān)于這方面我愈來愈覺得自己還是遠(yuǎn)遠(yuǎn)不夠的。
今天我們說3個原則和兩個模式,單1職責(zé)原則,開放-封閉原則,依賴倒轉(zhuǎn)原則,說了個簡單的設(shè)計(jì)模式,分別是簡單工廠模式,和工廠方法模式。
我們1個1個的來,先說單1職責(zé)原則。就1個類而言,應(yīng)當(dāng)唯一1個引發(fā)它變化的緣由,在我之前寫java的程序的時候,對這些東西感觸還是挺深的,單1職責(zé)就是說我們要把1個類設(shè)計(jì)的盡可能簡單,讓他的職責(zé)很專注,很單1,不是說把很多東西揉在1起,1個類如果職責(zé)過量,后續(xù)一定會引發(fā)代碼的壞味道。
開放-封閉原則OCP(The open-close principle),開放-封閉原則是,軟件在迭代開發(fā)的時候,免不了會有1些新的需求,我們寫的程序在新的需求來的時候,是增加類,增加方法來適應(yīng)新的需求,而不是1味的修改原來的代碼對擴(kuò)大是開放的,對更改是封閉的,對程序的改動是增加新代碼進(jìn)行的,而不是更改現(xiàn)有代碼。更改現(xiàn)有的代碼,會影響軟件的穩(wěn)定性,也其實(shí)不利于軟件的久長發(fā)展。
依賴倒轉(zhuǎn)原則,高層模塊不應(yīng)當(dāng)依賴于底層模塊,兩個都依賴于抽象
抽象不應(yīng)當(dāng)依賴細(xì)節(jié),細(xì)節(jié)應(yīng)當(dāng)依賴于抽象
說白了就是針對接口編程,而不是針對實(shí)現(xiàn)編程
3個原則主要就是在軟件開發(fā)進(jìn)程中的原則,1般情況下如果軟件設(shè)計(jì)公道,是不背背這3個原則的。
下面我就說說兩個比較簡單的設(shè)計(jì)模式吧,先說簡單工廠。簡單工廠就是下面的這個圖。
這個是我從書上截下來的圖,這個大概意思就是說1個簡簡單單的數(shù)學(xué)運(yùn)算的設(shè)計(jì),這個設(shè)計(jì)的好處就是,客戶類和工廠類分開,消費(fèi)者任什么時候候需要某種產(chǎn)品,只需向工廠要求便可,消費(fèi)者無需修改就能夠接納新產(chǎn)品,缺點(diǎn)就是簡單工廠在增加運(yùn)算的類的時候,要修改簡單工廠內(nèi)部代碼,這也就背背了開放-封閉原則。
所以比簡單工廠好1點(diǎn)的工廠方法模式就來了,以下圖
這個就是工廠方法模式了,工廠方法模式要比簡單工廠模式好1點(diǎn)的就是對工廠也一樣的進(jìn)行了抽象,我們可以造很多個工廠來創(chuàng)建消費(fèi)者,工廠方法模式修正了簡單工廠模式中不遵照開放-封閉原則。工廠方法模式把判斷移到了客戶端去實(shí)現(xiàn),如果想添加新功能就不用修改原來的類,直接修改客戶端就好了。之前的簡單工廠是只有1個工廠,當(dāng)我們修改的時候需要修改這個類,而現(xiàn)在改成了需要修改客戶端。
其實(shí)今天也只是說了個大概,具體的代碼,大家可以去看大話設(shè)計(jì)模式的那本書,感覺那個講的還是不錯的,今天隨著他,寫了兩個模式,感覺蠻好的。
學(xué)習(xí)設(shè)計(jì)模式1定要有項(xiàng)目基礎(chǔ),沒有項(xiàng)目基礎(chǔ)你看這些模式1點(diǎn)感覺都沒有,只有有了1定的項(xiàng)目基礎(chǔ),你才知道些項(xiàng)目的時候?yàn)楹螘懖幌氯ィ瑸楹螘恢涝鯓訉懀挥杏龅搅四莻€瓶頸回來看才真的會大徹大悟,所以大家1起加油吧。
今天實(shí)在是太晚了,我去刷牙,然后睡覺了,各位看官早點(diǎn)睡,晚安~