国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

面向?qū)ο笤O(shè)計原則

2019-11-14 14:00:09
字體:
供稿:網(wǎng)友

面向?qū)ο笃叽笤O(shè)計原則

 

1、開閉原則

 

2、里氏替換原則

 

3、 單一職責(zé)原則

 

4、接口隔離原則

 

5、依賴倒置原則

 

6、迪米特原則

 

7、組合

/

聚合復(fù)用原則

 

知識點關(guān)聯(lián)

 

學(xué)習(xí)面向?qū)ο蟮脑O(shè)計模式,

是深入面向?qū)ο笏枷氲蔫€匙,

通過大師級的微妙案例,

我們可以

開闊自己的認(rèn)知。

 

在學(xué)習(xí)面向?qū)ο笤O(shè)計七大原則之前,我們要對基本的封裝、繼承、多態(tài)思想有足夠的了解,

對抽象類和接口也要有足夠的編碼能力,因為設(shè)計模式是以上知識點的綜合應(yīng)用。

 

另外,

在接觸具體的設(shè)計模式之前,

面向?qū)ο蟮钠叽笤O(shè)計原則會讓你知道,

設(shè)計模式出現(xiàn)的

必然性和意義所在。

 

 

1、

每一種設(shè)計思想的精準(zhǔn)含義,具體如下:

 

先從整體認(rèn)識這七種設(shè)計思想。

 

一、開閉原則:

這一條放在第一位來理解,

它的含義是

對擴展開放,

對修改關(guān)閉

解釋一下就是,

我們

寫完的代碼,不能因為需求變化就修改。我們可以通過新增代碼的方式來解決變化的需求。

 

當(dāng)然,這是一種理想的狀態(tài),在現(xiàn)實中,我們要盡量的縮小這種修改。

 

再解釋一下這條原則的意義所在,

我們采用逆向思維方式來想。

如果每次需求變動都去

修改原有的代碼,

那原有的代碼就存在被修改錯誤的風(fēng)險,

當(dāng)然這其中存在有意和無意的修改,

都會導(dǎo)致原有正常運行的功能失效的風(fēng)險,

這樣很有可能會展開可怕的蝴蝶效應(yīng),

使維護工作劇增。

 說到底,開閉原則除了表面上的可擴展性強以外,在企業(yè)中更看重的是維護成本。

 所以,

開閉原則是設(shè)計模式的第一大原則,它的潛臺詞是:控制需求變動風(fēng)險,縮小維護成本。

 

以下幾種原則,都是為此原則服務(wù)的。

 

二、里氏替換選擇:

 

此原則的含義是子類可以在任何地方替換它的父類。解釋一下,這是多態(tài)的前提,我

們后面很多所謂的靈活,都是不改變聲明類型的情況下,改變實例化類來完成的需求變更。當(dāng)然,

繼承的特性看似天然就滿足這個條件。

但這里更注重的是繼承的應(yīng)用問題,

我們必須保證我們的子類和父類劃分是精準(zhǔn)的。

 

里氏替換原則的潛臺詞是:盡量使用精準(zhǔn)的抽象類或者接口。

 

三、單一職責(zé)原則:

單一職責(zé)的含義是:

類的職責(zé)單一,引起類變化的原因單一。解釋一下,這也是靈活的前提,

如果我們把類拆分成最小的職能單位,

那組合與復(fù)用就簡單的多了,

如果一個類做的事情太多,在組合的時候,必然會產(chǎn)生不必要的方法出現(xiàn),這實際上是一種污染。

 

舉個例子,我們在繪制圖案的時候,用“點”組成圖和用“直線”組成圖,哪個更靈活呢?一定是“點”,它可以繪制任何圖形,而直線只能繪制帶有直線條的圖案,它起碼無法畫圓。

 

單一職責(zé)的潛臺詞是:拆分到最小單位,解決復(fù)用和組合問題。

 

四、接口隔離原則:

 

接口隔離原則可以說是單一職責(zé)的必要手段,

它的含義是盡量使用職能單一的接口,

而不使用職能復(fù)雜、全面的接口。

很好理解,接口是為了讓子類實現(xiàn)的,

如果子類想達(dá)到職能單一,那么接口也必須滿足職能單一。

 

相反,

如果接口融合了多個不相關(guān)的方法,

那它的子類就被迫要實現(xiàn)所有方法,

盡管有些方法是根本用不到的。這就是接口污染。

 

接口隔離原則的潛臺詞是:拆分,從接口開始。

 

五、依賴倒置原則:

 

想要理解依賴倒置原則,

必須先理解傳統(tǒng)的解決方案。

面相對象的初期的程序,

被調(diào)用者依賴于調(diào)用者。

也就是調(diào)用者決定被調(diào)用者有什么方法,

有什么樣的實現(xiàn)方式,

這種結(jié)構(gòu)在需求變更的時候,會付出很大的代價,甚至推翻重寫。

 

依賴倒置原則就是

要求調(diào)用者和被調(diào)用者都依賴抽象

,這樣兩者沒有直接的關(guān)聯(lián)和接觸,在變動的時候,一方的變動不會影響另一方的變動。

 

其實,依賴倒置和前面的原則是相輔相成的,都強調(diào)了抽象的重要性。

 

依賴倒置的潛臺詞是:面向抽象編程,解耦調(diào)用和被調(diào)用者。

 

六、迪米特原則:

 

迪米特原則

要求盡量的封裝,盡量的獨立,盡量的使用低級別的訪問修飾符。這是封裝特性的典型體現(xiàn)。

 

一個類如果暴露太多私用的方法和字段,

會讓調(diào)用者很茫然。

并且會給類造成不必要的判斷代碼。

所以,我們使用盡量低的訪問修飾符,

讓外界不知道我們的內(nèi)部。這也是面向?qū)ο蟮幕舅悸贰_@是迪米特原則的一個特性,無法了解類更多的私有信息。

 

另外,

迪米特原則要求類之間的直接聯(lián)系盡量的少,

兩個類的訪問,

通過第三個中介類

來實現(xiàn)。

 

迪米特原則的潛臺詞是:不和陌生人說話,有事去中介。

 

七、組合

聚合復(fù)用原則:

 

此原則的含義是,如果

只是達(dá)到代碼復(fù)用的目的,盡量使用組合與聚合,而不是繼承。這里需要解釋一下,

組合聚合只是引用其他的類的方法,而不會受引用的類的繼承而改變血統(tǒng)。

 

 

繼承的耦合性更大,比如一個父類后來添加實現(xiàn)一個接口或者去掉一個接口,那子類可

能會遭到毀滅性的編譯錯誤,

但如果只是組合聚合,只是引用類的方法,

就不會有這種巨大的風(fēng)險,同時也實現(xiàn)了復(fù)用。

 

組合聚合復(fù)用原則的潛臺詞是:我只是用你的方法,我們不一定是同類。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 韶山市| 原阳县| 临西县| 修武县| 旌德县| 沧源| 卢龙县| 淳安县| 黄龙县| 宝清县| 通辽市| 平泉县| 青浦区| 小金县| 余庆县| 淮安市| 白河县| 林口县| 高密市| 龙陵县| 吕梁市| 新安县| 大新县| 偃师市| 山阳县| 永昌县| 临汾市| 章丘市| 沈阳市| 大名县| 阆中市| 丰顺县| 鄂托克旗| 赤水市| 湖口县| 武功县| 若尔盖县| 绥江县| 潍坊市| 通榆县| 安庆市|