monolake 的GeekBand C++開發(fā)學(xué)習(xí)筆記(九)

前記:本周進(jìn)入設(shè)計模式課程×秃猓現(xiàn)實(shí)中很多復(fù)雜的設(shè)計可以通過分解來細(xì)分成較小的問題霜定,不斷細(xì)分,細(xì)分成很多問題并抽象后廊鸥,會發(fā)現(xiàn)他們的解決思路是一致的望浩。前人總結(jié)出了基本問題的經(jīng)典解決方法,就是設(shè)計模式惰说。

復(fù)用

設(shè)計模式的核心思想就是復(fù)用磨德。設(shè)計的需求是不斷變化的,提高復(fù)用的設(shè)計方法吆视,考慮各種可能的拓展性典挑,在面對變化時才能應(yīng)對自如,同時結(jié)構(gòu)思路更清晰啦吧。
在程序設(shè)計中首先必須弄清楚“變化”和“穩(wěn)定”您觉。穩(wěn)定的部分是設(shè)計中的核心功能,變化是未來可能改變或拓展的部分授滓。將“穩(wěn)定”和“變化”隔離開來琳水,這樣明確各部分職責(zé),面對未來的變化般堆,提高了軟件架構(gòu)的穩(wěn)定性在孝。
面對對象設(shè)計中的底層實(shí)現(xiàn)為封裝和接口的思想就是穩(wěn)定和變化的隔離思想。

八大原則

面對對象設(shè)計的八大原則是:

1淮摔,依賴倒置原則(DIP)

高層模塊不應(yīng)該依賴低層模塊私沮,二者都應(yīng)該依賴其抽象;抽象不應(yīng)該依賴細(xì)節(jié)噩咪;細(xì)節(jié)應(yīng)該依賴抽象顾彰。

2,開閉原則(OCP)

對拓展開放胃碾,對更改封閉。
在軟件的生命周期內(nèi)筋搏,因?yàn)樽兓桶佟⑸壓途S護(hù)等原因需要對軟件原有代碼進(jìn)行修改時,可能會給舊代碼中引入錯誤奔脐,也可能會使我們不得不對整個功能進(jìn)行重構(gòu)俄周,并且需要原有代碼經(jīng)過重新測試。
因此髓迎,當(dāng)軟件需要變化時峦朗,盡量通過擴(kuò)展軟件實(shí)體的行為來實(shí)現(xiàn)變化,而不是通過修改已有的代碼來實(shí)現(xiàn)變化排龄。

3波势,單一職責(zé)原則(SRP)

類的職責(zé)要單一,不能將太多的職責(zé)放在一個類中。(高內(nèi)聚尺铣、低耦合)
功能單一便于使用和維護(hù)拴曲,并且不會發(fā)生太多干擾。

4凛忿,Liskor替換原則(LSP)

子類必須能替換他的基類澈灼。

5,接口隔離原則(ISP)

客戶端不應(yīng)該依賴它不需要的接口店溢;一個類對另一個類的依賴應(yīng)該建立在最小的接口上叁熔。

6,優(yōu)先使用對象組合床牧,而不是類繼承

繼承為白箱復(fù)用荣回,某種程度上為打破了封裝性,耦合度高叠赦。
利用對象組合則擁有良好定義的接口驹马,耦合度低。

7除秀,封裝變化點(diǎn)

使用封裝來創(chuàng)建對象間的分界層糯累。讓設(shè)計可以在分界層一側(cè)進(jìn)行修改,而不影響另一側(cè)册踩。實(shí)現(xiàn)層次間的松耦合泳姐。

8,針對接口編程暂吉,而不是針對實(shí)現(xiàn)編程

不將變量類型設(shè)置為具體的類胖秒,而是聲明為接口。這樣客戶無需知道對象的具體類型慕的,而只需知道對象具有的接口阎肝,減少各部分的依賴關(guān)系,實(shí)現(xiàn)“高內(nèi)聚肮街,低耦合”的設(shè)計思想风题。

重構(gòu)

成熟的設(shè)計模式不是石頭縫里鉆出來的,是一步一步改進(jìn)完善的結(jié)果嫉父。在研究設(shè)計模式時沛硅,重構(gòu)思想是十分重要的,通過不斷的研究程序绕辖,發(fā)現(xiàn)問題點(diǎn)摇肌,重構(gòu)優(yōu)化問題,在思考過程中會發(fā)現(xiàn)各種設(shè)計模式的優(yōu)缺點(diǎn)及其應(yīng)用位置仪际。
重構(gòu)技法的思想围小,有以下一個設(shè)計改善原則:
1昵骤,靜態(tài)->動態(tài)
2,早綁定->晚綁定
3吩抓,繼承->組合
4涉茧,編譯時依賴->運(yùn)行時依賴
5,緊耦合->松耦合

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末疹娶,一起剝皮案震驚了整個濱河市伴栓,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌雨饺,老刑警劉巖钳垮,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異额港,居然都是意外死亡饺窿,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進(jìn)店門移斩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來肚医,“玉大人,你說我怎么就攤上這事向瓷〕μ祝” “怎么了?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我祝蝠,道長,這世上最難降的妖魔是什么篷角? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘宇弛。我一直安慰自己,他們只是感情好源请,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布涯肩。 她就那樣靜靜地躺著,像睡著了一般巢钓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上疗垛,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天症汹,我揣著相機(jī)與錄音,去河邊找鬼贷腕。 笑死背镇,一個胖子當(dāng)著我的面吹牛咬展,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播瞒斩,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼破婆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了胸囱?” 一聲冷哼從身側(cè)響起祷舀,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎烹笔,沒想到半個月后裳扯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谤职,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年饰豺,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片允蜈。...
    茶點(diǎn)故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡冤吨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出饶套,到底是詐尸還是另有隱情漩蟆,我是刑警寧澤,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布凤跑,位于F島的核電站爆安,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏仔引。R本人自食惡果不足惜扔仓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望咖耘。 院中可真熱鬧翘簇,春花似錦、人聲如沸儿倒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽夫否。三九已至彻犁,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間凰慈,已是汗流浹背汞幢。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留微谓,地道東北人森篷。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓输钩,卻偏偏與公主長得像,于是被迫代替她去往敵國和親仲智。 傳聞我的和親對象是個殘疾皇子买乃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內(nèi)容