大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 六大接口設(shè)計原則

六大接口設(shè)計原則

更新時間:2021-08-10 13:14:23 來源:動力節(jié)點 瀏覽1002次

六大接口設(shè)計原則

依賴倒置原則

依賴倒置原則是什么?又有哪些含義呢?很多軟件工程師都多少在處理 "Bad Design" 時有一些痛苦的經(jīng)歷。如果發(fā)現(xiàn)這些 "Bad Design" 的始作俑者就是我們自己時,那感覺就更糟糕了。那么,到底是什么讓我做出一個能稱為 "Bad Design" 的設(shè)計呢?

絕大多數(shù)軟件工程師不會在設(shè)計之初就打算設(shè)計一個 "Bad Design"。許多軟件也在不斷地演化中逐漸地降級到了一個點,而從這個點開始,有人開始說這個設(shè)計已經(jīng)腐爛到一定程度了。為什么會發(fā)生這些事情呢?是因為最初設(shè)計的匱乏嗎,還是設(shè)計逐步降級到像塊腐爛的肉一樣?實際上,尋找這些答案得先從確定 "Bad Design" 的準(zhǔn)確定義開始。

包含三層含義:

1.高層模塊不應(yīng)該依賴低層模塊,兩者都應(yīng)該依賴其抽象。

2.抽象不應(yīng)該依賴細節(jié)。

3.細節(jié)應(yīng)該依賴抽象。

精簡的定義: 面向?qū)ο缶幊?/span>

Test-Driven Development 測試驅(qū)動開發(fā)是依賴倒置原則的最好體現(xiàn)。

測試驅(qū)動開發(fā)要求先寫測試類,測試通過才寫實現(xiàn)類,這就要求你要先想接口定義。

依賴的三種寫法:

1.構(gòu)造函數(shù)傳遞依賴對象。

2.Setter方法傳遞依賴對象。

3.接口聲明依賴對象。

最佳實踐:

1.每個類盡量都有接口或抽象類,或者抽象類和接口兩者都具備。

2.變量的表面類型盡量是接口或抽象類。

3.任何類都不應(yīng)該從具體類派生。

4.盡量不要覆寫基類的方法。

5.結(jié)合里氏替換原則使用。

里氏替換原則

Liskov Substitution Principle, 簡稱LSP。

定義:Functions that use pointers or references to base classes must be able to use objects of derived classes without knowing it.

(所有引用基類的地方必須能透明地使用其子類的對象)

里氏替換原則為良好的繼承定義了一個規(guī)范:

1.子類必須完全實現(xiàn)父類的方法

2.子類可以有自己的個性(屬性和方法)。

3.覆蓋或?qū)崿F(xiàn)父類的方法時輸入?yún)?shù)可以被放大。

4.覆寫或?qū)崿F(xiàn)父類的方法時輸出結(jié)果可以被縮小。

注:在類中調(diào)用其他類時務(wù)必要使用父類或接口,如果不能使用父類或接口,則說明類的設(shè)計已經(jīng)違背了LSP原則。

單一職責(zé)原則

Single Responsibility Principle, 簡稱SRP。

定義:There should never be more than one reason for a class to change.

應(yīng)該有且僅有一個原因引起類的變更。

職責(zé)的劃分?單一的定義和級別?

應(yīng)該根據(jù)實際業(yè)務(wù)情況而定。關(guān)注變化點。

實際使用時,類很難做到職責(zé)單一,但是接口的職責(zé)應(yīng)該盡量單一。

接口隔離原則

接口--這里指用interface關(guān)鍵字定義的接口。

定義:

1.Clients should not be forced to depend upon interfaces that they don't use.(客戶端不應(yīng)該依賴它不需要的接口)

2.The dependency of one class to anther one should depend on the smallest possible interface.(類間的依賴關(guān)系應(yīng)該建立在最小的接口上)

概括:建立單一接口,不要建立臃腫龐大的接口。

通俗來講:接口盡量細化,同時接口中的方法盡量少。

如何細化?細化到什么程序?

沒有統(tǒng)一的標(biāo)準(zhǔn),應(yīng)根據(jù)業(yè)務(wù)合理細分,適合業(yè)務(wù)才是重點。

保證接口的純結(jié)性:

1.接口要盡量小。

2.接口要高內(nèi)聚。

3.定制服務(wù)。

4.接口的設(shè)計是有限度的。

最佳實踐:

1.一個接口只服務(wù)于一個子模塊或業(yè)務(wù)邏輯。

2.通過業(yè)務(wù)邏輯壓縮接口中的public方法,接口時常去回顧,盡量讓接口達到“滿身筋骨肉”,而不是“肥嘟嘟”的一大堆方法。

3.已經(jīng)被污染了的接口,盡量去修改,若變更的風(fēng)險較大,則采用適配器模式進行轉(zhuǎn)化處理。

4.了解環(huán)境,拒絕盲從。每個項目或產(chǎn)品都有特定的環(huán)境因素,不要盲從大師的設(shè)計,要根據(jù)業(yè)務(wù)邏輯進行最好的接口設(shè)計。

迪米特法則

Law of Demeter, LOD。又稱最少知識原則(Least Knowledge Principle, LKP)。

通俗來講:一個類應(yīng)該對自己需要耦合或調(diào)用的類知道得最少,你(被耦合或調(diào)用的類)的內(nèi)部是如何復(fù)雜都和我沒有關(guān)系,那是你的事情,我就調(diào)用你提供的public方法,其他一概不關(guān)心。

低耦合要求:

1.只和朋友交流

朋友類:出現(xiàn)在成員變量、方法的輸入輸出參數(shù)中的類。方法體內(nèi)部的類不屬于朋友類。

2.朋友間也是有距離的

迪米特法則要求類“羞澀”一點,盡量不要對外公布太多的public方法和非靜態(tài)的public變量,盡量內(nèi)斂,多使用private、package-private、protected等訪問權(quán)限。

3.是自己的就是自己的

如果一個方法放在本類中,既不增加類間關(guān)系,也對本類不產(chǎn)生負面影響,就放置在本類中。

4.謹(jǐn)慎使用Serializable

開閉原則

Software entities like classes, modules and functions should be open for extension but closed for modifications.(一個軟件實體如類、模塊和函數(shù)應(yīng)該對擴展開放,對修改關(guān)閉)

軟件實體包括以下幾個部分:

1.項目和軟件產(chǎn)品中按照一定的邏輯規(guī)則劃分的模塊。

2.抽象和類。

3.方法。

變化的三種類型:

1.邏輯變化

2.子模塊變化

3.可見視圖變化

以上就是動力節(jié)點小編介紹的"六大接口設(shè)計原則",希望對大家有幫助,想了解更多可查看面向?qū)ο笤O(shè)計原則。動力節(jié)點在線學(xué)習(xí)教程,針對沒有任何Java基礎(chǔ)的讀者學(xué)習(xí),讓你從入門到精通,主要介紹了一些Java基礎(chǔ)的核心知識,讓同學(xué)們更好更方便的學(xué)習(xí)和了解Java編程,感興趣的同學(xué)可以關(guān)注一下。

提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 久久天天操| 国产精品在线播放 | 成年美女 | 精品亚洲视频在线 | 国产在线98福利播放视频免费 | 国产香蕉在线精彩视频 | 亚洲综合激情九月婷婷 | 黄色片网站在线观看 | 亚洲国产99在线精品一区二区 | 爱色aⅴ| 欧美精品成人a多人在线观看 | 日本在线三级 | 国产精品国产三级国快看 | 91视频精选| 美国一级毛片片aa久久综合 | 色国产视频| 国产免费爱在线观看视频 | 中文字幕久久久 | 亚洲区欧美中文字幕久久 | 国产精品美女视频 | 亚洲国产一区二区三区a毛片 | 国产亚洲欧美另类一区二区三区 | 伊人影院在线视频 | 九九99久久精品影视 | 九九伊人网| 亚洲99在线的 | 国产精品久久久久久久久久久搜索 | 欧美成人免费观看的 | 综合网色| 欧美一区二区三区影院 | 久久一日本道色综合久久 | 精品久久影院 | 99精品久久精品一区二区 | 日韩欧美毛片免费观看视频 | 免费国产视频 | 免费a级毛片大学生免费观看 | 香焦视频在线观看黄 | 成人国产一区二区三区精品 | 久久精品94精品久久精品 | 久久996国产精品免费 | 黄色片网站在线 |