0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

接口設(shè)計(jì)設(shè)計(jì)模式的六大原則你了解嗎?

C語言專家集中營 ? 來源:未知 ? 作者:易水寒 ? 2018-06-10 09:25 ? 次閱讀

一. 單一職責(zé)原則

Single Responsibility Principle, 簡稱SRP。

定義

There should never be more than one reason for a class to change應(yīng)該有且僅有一個原因引起類的變

準(zhǔn)則

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

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

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

接口設(shè)計(jì)設(shè)計(jì)模式的六大原則你了解嗎?

二. 里氏替換原則

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所有引用基類的地方必須能透明地使用其子類的對象

準(zhǔn)則

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

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

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

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

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

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

三. 依賴倒置原則

Dependence Inversion Principle, 簡稱DIP

定義

High level modules should not depend upon low level modules.Both should depend upon abstractions.Abstractions should not depend upon details.Details should depend upon abstractions.

翻譯過來,包含三層含義:

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

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

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

精簡的定義: 面向接口編程。

案例

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

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

依賴的三種寫法:

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

Setter方法傳遞依賴對象。

接口聲明依賴對象。

最佳實(shí)踐:

每個類盡量都有接口或抽象類,或者抽象類和接口兩者都具備。變量的表面類型盡量是接口或抽象類。任何類都不應(yīng)該從具體類派生。盡量不要覆寫基類的方法。結(jié)合里氏替換原則使用。

四. 接口隔離原則:

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

定義:

Clients should not be forced to depend upon interfaces that they don’t use.(客戶端不應(yīng)該依賴它不需要的接口)The dependency of one class to anther one should depend on the smallest possible interface.(類間的依賴關(guān)系應(yīng)該建立在最小的接口上)概括:建立單一接口,不要建立臃腫龐大的接口。

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

準(zhǔn)則

如何細(xì)化?細(xì)化到什么程序?

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

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

接口要盡量小。接口要高內(nèi)聚。定制服務(wù)。接口的設(shè)計(jì)是有限度的。

最佳實(shí)踐:

一個接口只服務(wù)于一個子模塊或業(yè)務(wù)邏輯。通過業(yè)務(wù)邏輯壓縮接口中的public方法,接口時常去回顧,盡量讓接口達(dá)到“滿身筋骨肉”,而不是“肥嘟嘟”的一大堆方法。已經(jīng)被污染了的接口,盡量去修改,若變更的風(fēng)險(xiǎn)較大,則采用適配器模式進(jìn)行轉(zhuǎn)化處理。了解環(huán)境,拒絕盲從。每個項(xiàng)目或產(chǎn)品都有特定的環(huán)境因素,不要盲從大師的設(shè)計(jì),要根據(jù)業(yè)務(wù)邏輯進(jìn)行最好的接口設(shè)計(jì)。

五.迪米特法則

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

定義:

一個對象應(yīng)該對其他對象保持最少的了解。

準(zhǔn)則:

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

低耦合要求:

只和朋友交流

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

朋友間也是有距離的

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

是自己的就是自己的

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

謹(jǐn)慎使用Serializable

六.開閉原則

定義:

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

準(zhǔn)則:

軟件實(shí)體包括以下幾個部分:

項(xiàng)目和軟件產(chǎn)品中按照一定的邏輯規(guī)則劃分的模塊。抽象和類。方法。變化的三種類型:

邏輯變化子模塊變化可見視圖變化

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 接口設(shè)計(jì)
    +關(guān)注

    關(guān)注

    2

    文章

    196

    瀏覽量

    29849
  • DIP
    DIP
    +關(guān)注

    關(guān)注

    0

    文章

    241

    瀏覽量

    30144
  • LSP
    LSP
    +關(guān)注

    關(guān)注

    0

    文章

    13

    瀏覽量

    9790

原文標(biāo)題:接口設(shè)計(jì)六大原則

文章出處:【微信號:C_Expert,微信公眾號:C語言專家集中營】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    軟件測試的7大原則,漏了幾條?

    軟件測試報(bào)告最需要注意的就是測試思考,而非測試執(zhí)行。而對軟件測試菜鳥來說,初入行,首先要知道軟件測試的7條原則了解這些可以讓事倍功半。 1測試的不可窮盡原則 是的!任何產(chǎn)品不可能被
    發(fā)表于 01-18 09:39

    如何選擇IDC服務(wù)商十大原則

    如何選擇IDC服務(wù)商十大原則現(xiàn)在擁有網(wǎng)站的企業(yè)或者個人越來越多,對服務(wù)器的需求有增無減,如何選擇理想的IDC服務(wù)商,自然成了他們首要考慮的問題。筆者就此問題,介紹了一些必要的技巧,并概括為選IDC
    發(fā)表于 01-21 12:03

    Python設(shè)計(jì)模式六大原則

    Segregation Principle)這個原則的意思是:使用多個隔離的接口,比使用單個接口要好。還是一個降低類之間的耦合度的意思,從這兒我們看出,其實(shí)設(shè)計(jì)模式就是一個軟件的設(shè)計(jì)
    發(fā)表于 05-07 18:10

    大原則,讓選對繼電器

    。但是繼電器品類眾多,如何挑選優(yōu)質(zhì)的繼電器成了一個難題。誰才是國民PICK?三大原則,選對繼電器在《創(chuàng)造101》中,女團(tuán)的出道經(jīng)過了導(dǎo)師和女團(tuán)創(chuàng)始人的層層把關(guān),綜合各方面考慮才篩選出最終的11位成員
    發(fā)表于 08-01 20:21

    接口設(shè)計(jì)的6大原則,都知道嗎?

    污染了的接口,盡量去修改,若變更的風(fēng)險(xiǎn)較大,則采用適配器模式進(jìn)行轉(zhuǎn)化處理。了解環(huán)境,拒絕盲從。每個項(xiàng)目或產(chǎn)品都有特定的環(huán)境因素,不要盲從大師的設(shè)計(jì),要根據(jù)業(yè)務(wù)邏輯進(jìn)行最好的接口設(shè)計(jì)。五
    發(fā)表于 04-20 08:00

    什么是設(shè)計(jì)模式?為什么要學(xué)習(xí)設(shè)計(jì)模式

    怎么使用設(shè)計(jì)模式21種設(shè)計(jì)模式設(shè)計(jì)模式的遵循的六大原則設(shè)計(jì)模式之工廠模式.NET CORE微信掃
    發(fā)表于 01-19 06:41

    電路布線的基本六大原則

    發(fā)表于 03-28 18:37 ?1次下載

    設(shè)計(jì)模式原則及實(shí)現(xiàn)代碼的復(fù)用

    設(shè)計(jì)模式六大原則 開閉原則(Open Close Principle) 1988年,勃蘭特梅耶(Bertrand Meyer)在他的著作《面向?qū)ο筌浖?gòu)造(Object Oriented
    發(fā)表于 09-26 15:12 ?0次下載

    JAVA設(shè)計(jì)模式六大原則

    單一職責(zé)原則:不要存在多于一個導(dǎo)致類變更的原因。通俗的說,即一個類只負(fù)責(zé)一項(xiàng)職責(zé)。 問題由來:類T負(fù)責(zé)兩個不同的職責(zé):職責(zé)P1,職責(zé)P2。當(dāng)由于職責(zé)P1需求發(fā)生改變而需要修改類T時,有可能會導(dǎo)致原本運(yùn)行正常的職責(zé)P2功能發(fā)生故障。
    發(fā)表于 11-27 11:23 ?8867次閱讀
    JAVA設(shè)計(jì)<b class='flag-5'>模式</b><b class='flag-5'>六大原則</b>

    一文匯總PCB電路設(shè)計(jì)的六大原則

    ,可能會出現(xiàn)一些問題,甚至很可能帶來嚴(yán)重的電路性能問題。本文主要介紹的是PCB電路設(shè)計(jì)的六大原則,具體的跟隨小編來了解一下。
    發(fā)表于 05-04 15:50 ?6367次閱讀
    一文匯總PCB電路設(shè)計(jì)的<b class='flag-5'>六大原則</b>

    制造業(yè)組裝線設(shè)計(jì)必須要納入的五大原則?

    隨著全球制造業(yè)積極尋求競爭力后,許多業(yè)者也開始在運(yùn)轉(zhuǎn)作過程中設(shè)法達(dá)到精益生產(chǎn)(Lean Manufacturing)目的。據(jù)Automation World報(bào)導(dǎo),廠商在現(xiàn)有組裝線設(shè)計(jì)內(nèi)可引進(jìn)五大原則,將可達(dá)到避免制程浪費(fèi)與提升產(chǎn)品質(zhì)量的目的。
    發(fā)表于 07-22 09:39 ?1783次閱讀

    設(shè)計(jì)模式(1)—什么是設(shè)計(jì)模式?設(shè)計(jì)模式六大原則是什么?

    目錄1.什么設(shè)計(jì)模式2.設(shè)計(jì)模式的發(fā)展3.設(shè)計(jì)原則6大原則3.1 開閉原則3.2 里氏轉(zhuǎn)換原則3
    發(fā)表于 11-07 09:51 ?8次下載
    設(shè)計(jì)<b class='flag-5'>模式</b>(1)—什么是設(shè)計(jì)<b class='flag-5'>模式</b>?設(shè)計(jì)<b class='flag-5'>模式</b>的<b class='flag-5'>六大原則</b>是什么?

    工業(yè)傳感器選型的六大基本原則

    工業(yè)傳感器選型的六大基本原則
    的頭像 發(fā)表于 01-06 09:17 ?1113次閱讀

    電路布線的七大原則

    電路布線的七大原則? 電路布線是電子設(shè)計(jì)中非常重要的一環(huán),它直接影響著電路的性能和穩(wěn)定性。因此,在進(jìn)行電路布線的時候,需要遵循七大原則,這些原則包括電磁兼容性、信號傳輸、電源噪聲、熱管理、機(jī)械可靠性
    的頭像 發(fā)表于 10-27 10:26 ?1273次閱讀

    分布式存儲系統(tǒng)的七大原則之二:區(qū)分環(huán)境數(shù)據(jù)與業(yè)務(wù)數(shù)據(jù)

    在之前討論的分布式存儲系統(tǒng)七大原則的第一原則中,我們了解了容災(zāi)切換和數(shù)據(jù)備份的差異?,F(xiàn)在,我們繼續(xù)探索第二原則:區(qū)分環(huán)境數(shù)據(jù)與業(yè)務(wù)數(shù)據(jù)。這一原則
    的頭像 發(fā)表于 03-11 09:42 ?364次閱讀