最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

李建忠:C++軟件設(shè)計(jì)思想、方法與模式

2021-12-07 10:01 作者:Boolan博覽  | 我要投稿

本文摘錄自Boolan首席軟件咨詢師李建忠老師主講的 《C++軟件設(shè)計(jì)思想、方法與模式》。


軟件設(shè)計(jì)思想與原則


從面向?qū)ο笳勂?/strong>

為什么要面向?qū)ο笤O(shè)計(jì)?

面向?qū)ο笤O(shè)計(jì)最大的優(yōu)勢(shì)在于:抵御變化


底層思維:向下,如何把握機(jī)器底層從微觀理解對(duì)象構(gòu)造。

抽象思維:向上,如何將我們的周圍世界抽象為程序代碼。


軟件設(shè)計(jì)通常具有固有的復(fù)雜性,了解軟件設(shè)計(jì)復(fù)雜性的誘因是處理復(fù)雜性的關(guān)鍵。


?分解

人們面對(duì)復(fù)雜性有一個(gè)常見的做法:即分而治之,將大問題分解為多個(gè)小問題,將復(fù)雜問題分解為多個(gè)簡(jiǎn)單問題。

?抽象

更高層次來講,人們處理復(fù)雜性有一個(gè)通用的技術(shù),即抽象。由于不能掌握全部的復(fù)雜對(duì)象,我們選擇忽視它的非本質(zhì)細(xì)節(jié),而去處理泛化和理想化了的對(duì)象模型。


?向上:深刻把握面向?qū)ο髾C(jī)制所帶來的抽象意義,理解如何使用這些機(jī)制來表達(dá)現(xiàn)實(shí)世界,掌握什么是“好的面向?qū)ο笤O(shè)計(jì)”


?對(duì)象通過“抽象”來管理復(fù)雜性

  • ? 數(shù)據(jù)抽象

  • ? 單一責(zé)任

  • ? 模塊化

  • ? 分治管理


面向?qū)ο笤O(shè)計(jì)的“SOLID”五大原則:

?SRP ( Single Responsibility Principle),單一職責(zé)原則

?OCP(Open Close Principle),開放封閉原則

?LSP(Liskov Substitution Principle),里氏替換原則

?ISP(Interface Segregation Principle),接口隔離原則

?DIP(Dependence Inversion Principle), 依賴倒置原則


深入理解面向?qū)ο笕髾C(jī)制:


?封裝,封裝數(shù)據(jù)(狀態(tài))與函數(shù)(行為)

  • ? 對(duì)象的內(nèi)存布局

?繼承,復(fù)用父類代碼實(shí)現(xiàn)

  • ? 子類與父類的對(duì)象模型

  • ? 私有繼承、受保護(hù)繼承、公有繼承

?多態(tài),運(yùn)行時(shí)選擇對(duì)象行為

  • ? 虛表指針完成運(yùn)行時(shí)動(dòng)態(tài)綁定


軟件設(shè)計(jì)方法與技巧


將設(shè)計(jì)原則提升為設(shè)計(jì)經(jīng)驗(yàn):

?設(shè)計(jì)原則 Design Principles?

Design Principles 描述與特定編程語(yǔ)言無關(guān)的,通用性的,適用于各種粒度的設(shè)計(jì)原則。

?設(shè)計(jì)習(xí)語(yǔ) Design Idioms

Design Idioms 描述與特定編程語(yǔ)言相關(guān)的特定規(guī)范、技巧、慣用法。參考《C++ Core Guidelines》

?設(shè)計(jì)模式 Design Patterns

Design Patterns主要描述的是“類與相互通信的對(duì)象之間的組織關(guān)系,包括它們的角色、職責(zé)、協(xié)作方式等方面。


重構(gòu)

?重構(gòu)是?種對(duì)軟件內(nèi)部結(jié)構(gòu)的改善,?的是在不改變軟件的可??為的情況下,使其更易理解,修改成本更低。


?重構(gòu)過程包括去除重復(fù)、簡(jiǎn)化復(fù)雜邏輯和澄清模糊的代碼。?

  • ? 要保證重構(gòu)的安全性

  • ? 循序漸進(jìn)地進(jìn)?重構(gòu)?

  • ? 要持續(xù)進(jìn)?重構(gòu)


通過重構(gòu)進(jìn)行迭代式設(shè)計(jì),逐步得到好的設(shè)計(jì),是設(shè)計(jì)常態(tài)。

重構(gòu)的要點(diǎn):

?提?代碼的可讀性?

?保持代碼整潔

?循序漸進(jìn)


架構(gòu)模式 Architectural Patterns:

?架構(gòu)模式描述系統(tǒng)中與基本結(jié)構(gòu)組織關(guān)系密切的高層模式。

?架構(gòu)模式通常包括子系統(tǒng)劃分,職責(zé),以及如何組織它們之間關(guān)系的規(guī)則。


設(shè)計(jì)模式與實(shí)踐

GOF-23 模式分類


?從目的來看:

  • ? ?創(chuàng)建型(Creational)模式:將對(duì)象的部分創(chuàng)建工作延遲到子類或者其他對(duì)象,從而應(yīng)對(duì)需求變化為對(duì)象創(chuàng)建時(shí)具體類型實(shí)現(xiàn)引來的沖擊。

  • ? ?結(jié)構(gòu)型(Structural)模式:通過類繼承或者對(duì)象組合獲得更靈活的結(jié)構(gòu),從而應(yīng)對(duì)需求變化為對(duì)象的結(jié)構(gòu)帶來的沖擊。

  • ? ?行為型(Behavioral)模式:通過類繼承或者對(duì)象組合來劃分類與對(duì)象間的職責(zé),從而應(yīng)對(duì)需求變化為多個(gè)交互的對(duì)象帶來的沖擊。

?從范圍來看:

  • ? ?類模式處理類與子類的靜態(tài)關(guān)系。

  • ? ?對(duì)象模式處理對(duì)象間的動(dòng)態(tài)關(guān)系。




12月9日晚20:00

《現(xiàn)代C++白皮書》線上發(fā)布會(huì)

等你來參與


李建忠:C++軟件設(shè)計(jì)思想、方法與模式的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
平定县| 册亨县| 富蕴县| 铁力市| 钟祥市| 正定县| 凤阳县| 时尚| 北安市| 昌黎县| 海城市| 清河县| 土默特左旗| 崇仁县| 宣城市| 玉环县| 稷山县| 太白县| 吉隆县| 镇安县| 区。| 瑞昌市| 东辽县| 墨竹工卡县| 普安县| 于田县| 招远市| 黑山县| 恩平市| 黑龙江省| 乌审旗| 封丘县| 曲麻莱县| 长宁区| 福海县| 铜川市| 陆川县| 甘谷县| 宽甸| 无极县| 宜君县|