第一講
課程目標(biāo)
理解松耦合設(shè)計(jì)思想
掌握面向?qū)ο笤O(shè)計(jì)原則
掌握重構(gòu)技法改善設(shè)計(jì)
掌握GOF核心設(shè)計(jì)模式
GOF設(shè)計(jì)模式
歷史性著作《設(shè)計(jì)模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ)》耕漱,介紹了23種設(shè)計(jì)模式。
通吃置危看過這本書的人都知道書的正標(biāo)題齐鲤,但是少有人會(huì)在意輸?shù)母睒?biāo)題:可復(fù)用面向?qū)ο筌浖幕A(chǔ)椒楣。可復(fù)用是設(shè)計(jì)模式的目標(biāo)捧灰,面向?qū)ο笫且环N技術(shù)手法。
通常所說的設(shè)計(jì)模式隱含是面向?qū)ο笤O(shè)計(jì)模式炭庙,但是不等于說設(shè)計(jì)模式就是面向?qū)ο笤O(shè)計(jì)模式煌寇。
從面向?qū)ο笳勂?/b>
面向?qū)ο箅[含著兩種思維模型,底層思維和抽象思維阀溶。
底層思維是指:向下银锻,如何把握機(jī)器底層,從微觀理解對(duì)象構(gòu)造击纬。如語言構(gòu)造、編譯轉(zhuǎn)換(李老師在這里吐槽c++難學(xué)的一點(diǎn)就是c++的編譯器在背后會(huì)做很多工作)炕桨,內(nèi)存模型,運(yùn)行時(shí)機(jī)制献宫。
抽象思維是指:向上遵蚜,如何將我們的周圍世界抽象為代碼程序。如面向?qū)ο罂跃唬M件封裝,設(shè)計(jì)模式囚巴,架構(gòu)模式友扰。
深入理解面向?qū)ο?/h4>
向下:深入理解三大main相對(duì)象機(jī)制
封裝,隱藏內(nèi)部實(shí)現(xiàn)
繼承村怪,復(fù)用現(xiàn)有代碼
多態(tài),改寫對(duì)象行為
向上:深刻把握面向?qū)ο髾C(jī)制所帶來的抽象意義柬焕,理解如何使用這些機(jī)制來表達(dá)現(xiàn)實(shí)世界梭域,掌握什么是“好的面向?qū)ο笤O(shè)計(jì)”。
個(gè)人感觸是多態(tài)的功能比繼承來的更為強(qiáng)大富玷,在代碼解耦和既穆、復(fù)用方面都更強(qiáng)大。同時(shí)循衰,封裝、繼承伐蒋、多態(tài)是面向?qū)ο蟮暮诵模獣r(shí)刻記住這三點(diǎn)俭正,面向?qū)ο笤O(shè)計(jì)模式也是圍繞這三點(diǎn)展開的焙畔。
軟件復(fù)雜的根本原因
變
軟件復(fù)雜的根本原因是變,如果加上一個(gè)修定宏多,就是頻繁的變,特別容易就變肾请。很多外行人會(huì)覺得寫代碼的人就是坐在電腦前更胖,敲敲鍵盤就能解決問題,覺得很簡(jiǎn)答啊饵逐、沒什么難的彪标,但其實(shí)這是個(gè)誤解。寫代碼很難捐下,寫好代碼萌业、沒有錯(cuò)誤的代碼生年,是一種極高的技藝,的確不是那么簡(jiǎn)單的抱婉。
如何解決復(fù)雜性?
分解:人們面對(duì)復(fù)雜性有一個(gè)常見的做法衙四,即分而治之