日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > asp.net >内容正文

asp.net

设计模式:设计模式七大原则

發(fā)布時(shí)間:2025/6/15 asp.net 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式:设计模式七大原则 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

單一職責(zé)原則

? ? ?對(duì)類(lèi)來(lái)說(shuō),即一個(gè)類(lèi)應(yīng)該只負(fù)責(zé)一項(xiàng)職責(zé)。如A類(lèi)負(fù)責(zé)兩個(gè)不同的職責(zé):職責(zé)1,職責(zé)2。當(dāng)職責(zé)1需求變更而改變A時(shí),可能造成職責(zé)2執(zhí)行錯(cuò)誤。所以需要將類(lèi)A的粒度分解為A1,A2。

? ?①降低類(lèi)的復(fù)雜度,一個(gè)類(lèi)只負(fù)責(zé)一項(xiàng)職責(zé)。

? ?②提高類(lèi)的可讀性,可維護(hù)性。

? ?③降低變更引起的風(fēng)險(xiǎn)。

? ? ④通常情況下,我們應(yīng)當(dāng)遵守單一職責(zé)原則,只有邏輯足夠簡(jiǎn)單,才可以在代碼級(jí)別違反單一職責(zé)原則,只有類(lèi)中方法數(shù)量足夠少,可以在方法級(jí)別保持單一職責(zé)原則。

?

接口隔離原則(interface segregation principle)

? ?客戶(hù)端不應(yīng)該依賴(lài)它不需要的接口,即一個(gè)類(lèi)對(duì)另一個(gè)類(lèi)的依賴(lài)應(yīng)該建立在最小的接口上。

?

依賴(lài)倒轉(zhuǎn)原則(dependence inversion principle)

? ①高層模塊不應(yīng)該依賴(lài)低層模塊,二者都應(yīng)該依賴(lài)其抽象。

? ②抽象不應(yīng)該依賴(lài)細(xì)節(jié),細(xì)節(jié)應(yīng)該依賴(lài)抽象。

? ③依賴(lài)倒轉(zhuǎn)的中心思想是面向接口編程

? ?④依賴(lài)倒轉(zhuǎn)原則是基于這樣的設(shè)計(jì)理念,相對(duì)于細(xì)節(jié)的多變性,抽象的東西要穩(wěn)定的多,以抽象為基礎(chǔ)搭建的架構(gòu)比以細(xì)節(jié)為基礎(chǔ)搭建的架構(gòu)穩(wěn)定的多,在java中,抽象指的是接口或抽象類(lèi),細(xì)節(jié)就是具體的實(shí)現(xiàn)類(lèi)

? ⑤使用接口或抽象類(lèi)的目的是制定好規(guī)范,而不涉及任何具體的操作,把展現(xiàn)細(xì)節(jié)的任務(wù)交給他們的實(shí)現(xiàn)類(lèi)去完成。

? ?依賴(lài)關(guān)系傳遞的三種方式1.接口傳遞 ? 2. 構(gòu)造方法傳遞 ?3. setter方法傳遞。

里式替換原則(Liskov Substitution?Principle)

? ? ①所有引用基類(lèi)的地方必須能透明地使用其子類(lèi)的對(duì)象

? ? ?②在使用繼承時(shí)候,遵循里式替換原則,在子類(lèi)中盡量不要重寫(xiě)父類(lèi)的方法。

? ? ③里式替換原則告訴我們,繼承實(shí)際上讓兩個(gè)類(lèi)耦合性增強(qiáng)了,在適當(dāng)?shù)那闆r下,可以通過(guò)聚合,組合,依賴(lài)來(lái)解決問(wèn)題。

? oo中的繼承性的思考和說(shuō)明:

? ? ?①繼承包含這樣一層含義,父類(lèi)中凡是已經(jīng)實(shí)現(xiàn)好的方法,實(shí)際上是在設(shè)定規(guī)范和契約,雖然它不強(qiáng)制要求所有的子類(lèi)必須遵循這些契約,但是子類(lèi)如果對(duì)這些已經(jīng)實(shí)現(xiàn)的方法任意修改,就會(huì)對(duì)整個(gè)繼承體系造成破壞。

? ?②繼承在給程序設(shè)計(jì)帶來(lái)便利的同時(shí),也帶來(lái)了弊端,比如使用繼承會(huì)給程序帶來(lái)侵入性,程序的可移植性降低,增加對(duì)象間的耦合性,如果一個(gè)類(lèi)被其他的類(lèi)所繼承,則當(dāng)這個(gè)類(lèi)需要修改時(shí),必須考慮到所有的子類(lèi),并且父類(lèi)修改后,所有涉及到子類(lèi)的功能都有可能產(chǎn)生故障。

? ?那么如何正確使用繼承呢? 遵循里式替換原則。

開(kāi)閉原則(open closed principle)

? ?①?編程中最基礎(chǔ),最重要的設(shè)計(jì)原則。

? ?②一個(gè)軟件實(shí)體如類(lèi),模塊和函數(shù)應(yīng)該對(duì)擴(kuò)展開(kāi)放(對(duì)提供方),對(duì)修改關(guān)閉(對(duì)使用方)。用抽象構(gòu)建框架,用實(shí)現(xiàn)擴(kuò)展細(xì)節(jié)。

? ?③當(dāng)軟件需要變化時(shí),盡量通過(guò)擴(kuò)展軟件實(shí)體的行為來(lái)實(shí)現(xiàn)變化,而不是通過(guò)修改已有的代碼來(lái)實(shí)現(xiàn)變化。

? ?④編程中遵循其他原則,以及使用設(shè)計(jì)模式的目的就是遵循開(kāi)閉原則。

迪米特法則

? ?① 一個(gè)對(duì)象應(yīng)該對(duì)其他對(duì)象保持最少的了解

? ?②類(lèi)與類(lèi)關(guān)系越密切,耦合度越大

? ?③迪米特法則(Demeter Principle) 又叫最少知道原則,即一個(gè)類(lèi)對(duì)自己依賴(lài)的類(lèi)知道的越少越好,也就是說(shuō),對(duì)于被依賴(lài)的類(lèi)不管多么復(fù)雜,都盡量將邏輯封裝在類(lèi)的內(nèi)部,對(duì)外除了提供的public方法,不對(duì)外泄漏任何信息。

? ?④迪米特法則還有個(gè)更簡(jiǎn)單的定義,只與直接的朋友通信。

? ? ?每個(gè)對(duì)象都會(huì)與其他對(duì)象有耦合關(guān)系,只要兩個(gè)對(duì)象之間有耦合關(guān)系,我們就說(shuō)這兩個(gè)對(duì)象之間是朋友關(guān)系,耦合的方式很多,依賴(lài),關(guān)聯(lián),組合,聚合等。其中,我們稱(chēng)出現(xiàn)成員變量,方法參數(shù),方法返回值中的類(lèi)為直接的朋友,而出現(xiàn)在局部變量中的類(lèi)不是直接的朋友,也就是說(shuō),陌生的類(lèi)最好不要以局部變量的形式出現(xiàn)在類(lèi)的內(nèi)部。

合成復(fù)用原則

? 盡量使用合成/聚合的方式,而不是使用繼承。

?

代碼重用性(相同的代碼,不用多次編寫(xiě))

代碼可讀性

總結(jié)

以上是生活随笔為你收集整理的设计模式:设计模式七大原则的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。