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

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

設(shè)計(jì)原則(一)

2023-07-21 10:12 作者:香草味的lollipop  | 我要投稿

一. 單一職責(zé)原則(Single Responsibility Principle)

????? 定義:應(yīng)該有且只有一個(gè)引起類變更的原因=>一個(gè)類,只能做一件事

????? 好處:

????????1. 提高了代碼的可讀性,提高系統(tǒng)的可維護(hù)性

????????2. 降低類的復(fù)雜度,一個(gè)模塊只負(fù)責(zé)一個(gè)職責(zé),提高系統(tǒng)的可擴(kuò)展性和可維護(hù)性

????????3. 降低類變更引起的風(fēng)險(xiǎn),變更是必然的,如果單一職責(zé)做的好,當(dāng)修改一個(gè)功能的時(shí)候可以顯著的降低對(duì)另一個(gè)功能的影響

二. 開(kāi)放封閉原則(Open Closed Principle)

????○ 開(kāi)放封閉原則是面向?qū)ο笏性瓌t的核心

????○ 對(duì)功能開(kāi)放,面向修改代碼封閉

????○ 需求改變時(shí),在不改變軟件實(shí)體源代碼(類、接口、方法等)的前提下,通過(guò)擴(kuò)展功能,使其滿足新的需求

????○ 面向抽象編程:使用抽象,封裝變化

三. 依賴倒置原則(Dependency Inversion Principle)

????○ 開(kāi)放封閉原則是面向?qū)ο笤O(shè)計(jì)的終極目標(biāo),而依賴倒置原則 是實(shí)現(xiàn)開(kāi)放封閉原則的基礎(chǔ)

????1. 高層模塊(調(diào)用者)不應(yīng)該依賴于低層模塊(被調(diào)用者),兩個(gè)都應(yīng)該依賴于抽象

????2. 抽象不應(yīng)該依賴于細(xì)節(jié),細(xì)節(jié)應(yīng)該依賴于抽象

????3. 依賴倒置原則的本質(zhì)就是通過(guò)抽象(接口或抽象類)使各個(gè)類或模塊的實(shí)現(xiàn)彼此獨(dú)立,互不影響,實(shí)現(xiàn)模塊間的松耦合

????○ 面向接口編程,不要面向?qū)崿F(xiàn)編程

4. 關(guān)于依賴

????i. 一個(gè)優(yōu)秀的面向?qū)ο蟪绦蛟O(shè)計(jì),核心原則之一就是將變化【隔離】/【封裝】

????ii. 為了實(shí)現(xiàn)這個(gè)目的,需要面向接口編程,使用后,客戶類,不再直接依賴于服務(wù)類,而是依賴一個(gè)抽象的接口,這樣,客戶類就不能在內(nèi)部直接實(shí)例化服務(wù)類

????iii. 但是在客戶類運(yùn)行的過(guò)程中,又需要具體的服務(wù)類來(lái)提供服務(wù),因?yàn)榻涌谑遣荒鼙粚?shí)例化的,就產(chǎn)生了一個(gè)矛盾:客戶類不允許實(shí)例化服務(wù)類,但是客戶類又需要服務(wù)類的服務(wù)

????iv. 為了解決這個(gè)矛盾,我們?cè)O(shè)計(jì)了一種解決方案,即:客戶類定義一個(gè)注入點(diǎn),用于服務(wù)類的注入,而客戶類的客戶類(Program類),負(fù)責(zé)根據(jù)具體情況,實(shí)例化服務(wù)類,注入到客戶類中,從而解決了這個(gè)矛盾

5. 依賴注入的方式

????i. 通過(guò)接口傳遞(接口注入)

????ii. 通過(guò)構(gòu)造函數(shù)傳遞

????iii. 通過(guò)屬性的set方法傳遞

四. 里氏替換原則(Liskov Substitution principle)

????○ 所有引用父類對(duì)象的地方,都可以使用其子類代替

????○?如果父類中裝的是子類對(duì)象,那么可以將這個(gè)父類強(qiáng)制轉(zhuǎn)換為子類對(duì)象

五. 接口隔離原則(Interface Segragation Principle)——設(shè)計(jì)接口時(shí)采用的指導(dǎo)思想

????1. 客戶端不應(yīng)該依賴它不需要的接口

????2. 一個(gè)類對(duì)另一個(gè)類的依賴應(yīng)該建立在最小接口上

????3. 接口盡量細(xì)分,不要在一個(gè)接口中放很多方法

????4. 接口隔離原則和單一職責(zé)原則的關(guān)系

????????§ 單一職責(zé):一個(gè)類干一件事? //影響類變化的原因只有一個(gè)? ? ? 高內(nèi)聚(模塊內(nèi)部元素的相似程度高)

????????§ 接口隔離:// 低耦合? 模塊之間的依賴程度較低

????5. 根據(jù)接口隔離原則拆分接口時(shí),首先必須滿足單一職責(zé)原則

六. 迪米特原則(Law of Demeter)(最小知識(shí)原則(The Least Knowledge Principle))——設(shè)計(jì)類的時(shí)候采用的指導(dǎo)思想

????1. 要求一個(gè)對(duì)象應(yīng)該對(duì)其它對(duì)象有最少的了解(最小知識(shí)原則)

????2. 降低類之間的耦合

????3. 迪米特原則實(shí)際上就是一個(gè)類在創(chuàng)建方法和屬性時(shí)要遵守的法則

????4. 只和直接朋友通信!

????i. 成員對(duì)象

????ii. 方法參數(shù)

????iii. 方法返回值

????iv. 注意:出現(xiàn)在局部變量中的類,不是直接朋友

七. 合成復(fù)用原則(Composite Reuse Principle)

????○ 合成復(fù)用原則,又稱組合/聚合復(fù)用原則

????○ 盡量使用對(duì)象組合,而不是繼承來(lái)達(dá)到復(fù)用

????○ 合成復(fù)用原則是將已有的對(duì)象納入到新對(duì)象中,作為新對(duì)象的對(duì)象成員來(lái)實(shí)現(xiàn)的,新對(duì)象可以調(diào)用已有對(duì)象的功能,從而達(dá)到復(fù)用

????○ 繼承的“bug”

????????§ 破壞了系統(tǒng)的封裝性,基類如果發(fā)生了改變,子類的實(shí)現(xiàn)也會(huì)發(fā)生改變

????????§ 子類如果不需要父類中新添加的方法,則系統(tǒng)耦合度會(huì)變高

????????§ 繼承是靜態(tài)的,不能在程序運(yùn)行時(shí)發(fā)生改變

????○ has-a關(guān)系 使用合成復(fù)用

????○ is-a關(guān)系? ? 使用繼承


設(shè)計(jì)原則(一)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
宁城县| 盖州市| 原平市| 湘潭县| 察雅县| 明水县| 定州市| 长兴县| 秦皇岛市| 郓城县| 黔江区| 定西市| 南华县| 桂平市| 栾川县| 海伦市| 青铜峡市| 无为县| 青神县| 靖边县| 马山县| 陇西县| 辛集市| 新田县| 永嘉县| 济源市| 台中市| 林州市| 保亭| 周宁县| 丁青县| 旬阳县| 长泰县| 名山县| 西乌珠穆沁旗| 伊川县| 桓台县| 梁平县| 称多县| 阿拉善盟| 濉溪县|