国产精品久久9a久美女性色,日韩综合中文字幕,天天射天天色天天干,亚洲天堂中文在线,成年人午夜视频,国产精品伦理久久久久久,亚洲欧美视频一区二区

php語(yǔ)言

六大程序接口設(shè)計(jì)原則

時(shí)間:2025-05-05 03:14:25 php語(yǔ)言 我要投稿

六大程序接口設(shè)計(jì)原則

  程序接口設(shè)計(jì)的原則是什么呢?下面是小編給大家提供的六大程序接口設(shè)計(jì)原則,大家可以參考閱讀,更多詳情請(qǐng)關(guān)注應(yīng)屆畢業(yè)生考試網(wǎng)。

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

  Single Responsibility Principle, 簡(jiǎn)稱(chēng)SRP。

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

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

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

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

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

  二.里氏替換原則

  Liskov Substitution Principle, 簡(jiǎn)稱(chēng)LSP。

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

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

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

  1.子類(lèi)必須完全實(shí)現(xiàn)父類(lèi)的方法

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

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

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

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

  三.依賴(lài)倒置原則

  Dependence Inversion Principle, 簡(jiǎn)稱(chēng)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.

  翻譯過(guò)來(lái),包含三層含義:

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

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

  3.細(xì)節(jié)應(yīng)該依賴(lài)抽象。

  精簡(jiǎn)的定義: 面向接口編程。

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

  測(cè)試驅(qū)動(dòng)開(kāi)發(fā)要求先寫(xiě)測(cè)試類(lèi),測(cè)試通過(guò)才寫(xiě)實(shí)現(xiàn)類(lèi),這就要求你要先想接口定義。

  依賴(lài)的三種寫(xiě)法:

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

  2.Setter方法傳遞依賴(lài)對(duì)象。

  3.接口聲明依賴(lài)對(duì)象。

  最佳實(shí)踐:

  1.每個(gè)類(lèi)盡量都有接口或抽象類(lèi),或者抽象類(lèi)和接口兩者都具備。

  2.變量的表面類(lèi)型盡量是接口或抽象類(lèi)。

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

  4.盡量不要覆寫(xiě)基類(lèi)的方法。

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

  四.接口隔離原則:

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

  定義:

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

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

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

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

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

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

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

  1.接口要盡量小。

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

  3.定制服務(wù)。

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

  最佳實(shí)踐:

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

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

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

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

  五.迪米特法則

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

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

  低耦合要求:

  1.只和朋友交流

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

  2.朋友間也是有距離的

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

  3.是自己的就是自己的

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

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

  六.開(kāi)閉原則

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

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

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

  2.抽象和類(lèi)。

  3.方法。

  變化的三種類(lèi)型:

  1.邏輯變化

  2.子模塊變化

  3.可見(jiàn)視圖變化

【六大程序接口設(shè)計(jì)原則】相關(guān)文章:

程序接口設(shè)計(jì)六大原則01-18

程序接口設(shè)計(jì)6大原則04-13

交互設(shè)計(jì)中六大通用原則06-03

簡(jiǎn)潔的網(wǎng)頁(yè)設(shè)計(jì)原則04-23

2017薪酬設(shè)計(jì)原則06-28

設(shè)計(jì)的一般原則教學(xué)設(shè)計(jì)06-22

網(wǎng)頁(yè)設(shè)計(jì)黃金配色的原則01-18

教學(xué)板書(shū)設(shè)計(jì)原則04-23

移動(dòng)網(wǎng)頁(yè)設(shè)計(jì)原則06-14