最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

面試中面試官問我設(shè)計(jì)模式的基本原則是什么?

2020-03-09 14:05 作者:碼上輔導(dǎo)  | 我要投稿

設(shè)計(jì)模式(Design pattern)代表了程序開發(fā)的最佳實(shí)踐,通常被有經(jīng)驗(yàn)的面向?qū)ο蟮能浖_發(fā)人員所采用。設(shè)計(jì)模式是軟件開發(fā)人員在軟件開發(fā)過程中面臨的一般問題的解決方案。這些解決方案是眾多軟件開發(fā)人員經(jīng)過相當(dāng)長的一段時(shí)間的試驗(yàn)和錯(cuò)誤總結(jié)出來的,那設(shè)計(jì)模式有那些基本設(shè)計(jì)原則的呢?


通常來說,設(shè)計(jì)模式的基本原則包含以下 7 個(gè)內(nèi)容:

  1. 單一職責(zé)原則(Single Responsibility Principle)
    單一職責(zé)原則表示一個(gè)模塊的組成元素之間的功能相關(guān)性。從軟件變化的角度來看,就一個(gè)類而言,應(yīng)該僅有一個(gè)讓它變化的原因;通俗地說,即一個(gè)類只負(fù)責(zé)一項(xiàng)職責(zé)。

  • SRP 是一個(gè)簡(jiǎn)單又直觀的原則,但是在實(shí)際編碼的過程中很難將它恰當(dāng)?shù)剡\(yùn)用,需要結(jié)合實(shí)際情況進(jìn)行運(yùn)用。

  • 單一職責(zé)原則可以降低類的復(fù)雜度,一個(gè)類僅負(fù)責(zé)一項(xiàng)職責(zé),其邏輯肯定要比負(fù)責(zé)多項(xiàng)職責(zé)簡(jiǎn)單。

  • 提高了代碼的可讀性,提高系統(tǒng)的可維護(hù)性。

  • 開放-關(guān)閉原則(Open-Closed Principle)
    開放-關(guān)閉原則表示軟件實(shí)體 (類、模塊、函數(shù)等等) 應(yīng)該是可以被擴(kuò)展的,但是不可被修改。
    如果一個(gè)軟件能夠滿足 OCP 原則,那么它將有兩項(xiàng)優(yōu)點(diǎn):

    • 能夠擴(kuò)展已存在的系統(tǒng),能夠提供新的功能滿足新的需求,因此該軟件有著很強(qiáng)的適應(yīng)性和靈活性。

    • 已存在的模塊,特別是那些重要的抽象模塊,不需要被修改,那么該軟件就有很強(qiáng)的穩(wěn)定性和持久性。

  • 里氏替換原則(Liskov Substitution Principle)
    將一個(gè)基類對(duì)象替換成它的子類對(duì)象,程序?qū)⒉粫?huì)產(chǎn)生任何錯(cuò)誤和異常,反過來則不成立,如果一個(gè)軟件實(shí)體使用的是一個(gè)子類對(duì)象的話,那么它不一定能夠使用基類對(duì)象。即子類可以擴(kuò)展父類的功能,但不能改變父類原有的功能

  • 依賴倒轉(zhuǎn)原則(Dependence Inversion Principle)
    高層模塊不應(yīng)該依賴低層模塊,二者都應(yīng)該于抽象。進(jìn)一步說,抽象不應(yīng)該依賴于細(xì)節(jié),細(xì)節(jié)應(yīng)該依賴于抽象。遵循依賴倒轉(zhuǎn)原則可以降低類之間的耦合性,提高系統(tǒng)的穩(wěn)定性,降低修改程序造成的風(fēng)險(xiǎn)。依賴倒轉(zhuǎn)原則的核心就是要我們面向接口編程

  • 接口隔離原則(Interface Segregation Principle)
    客戶端不應(yīng)該依賴它不需要的接口;一個(gè)類對(duì)另一個(gè)類的依賴應(yīng)該建立在最小的接口上

    • 接口隔離原則的思想在于建立單一接口,盡可能地去細(xì)化接口,接口中的方法盡可能少

    • 但是凡事都要有個(gè)度,如果接口設(shè)計(jì)過小,則會(huì)造成接口數(shù)量過多,使設(shè)計(jì)復(fù)雜化。所以一定要適度

  • 迪米特法則(Law Of Demeter)
    迪米特法則又稱為 最少知道原則,它表示一個(gè)對(duì)象應(yīng)該對(duì)其它對(duì)象保持最少的了解。通俗來說就是,只與直接的朋友通信。
    直接的朋友:每個(gè)對(duì)象都會(huì)與其他對(duì)象有耦合關(guān)系,只要兩個(gè)對(duì)象之間有耦合關(guān)系,我們就說這兩個(gè)對(duì)象之間是朋友關(guān)系。耦合的方式很多,依賴、關(guān)聯(lián)、組合、聚合等。其中,我們稱出現(xiàn)成員變量、方法參數(shù)、方法返回值中的類為直接的朋友,而出現(xiàn)在局部變量中的類則不是直接的朋友。也就是說,陌生的類最好不要作為局部變量的形式出現(xiàn)在類的內(nèi)部。
    對(duì)于被依賴的類來說,無論邏輯多么復(fù)雜,都盡量的將邏輯封裝在類的內(nèi)部,對(duì)外提供 public 方法,不對(duì)泄漏任何信息。

  • 組合/聚合復(fù)用原則(Composite/Aggregate Reuse Principle)
    組合/聚合復(fù)用原則就是在一個(gè)新的對(duì)象里面使用一些已有的對(duì)象,使之成為新對(duì)象的一部分; 新的對(duì)象通過向這些對(duì)象的委派達(dá)到復(fù)用已有功能的目的。
    在面向?qū)ο蟮脑O(shè)計(jì)中,如果直接繼承基類,會(huì)破壞封裝,因?yàn)槔^承將基類的實(shí)現(xiàn)細(xì)節(jié)暴露給子類;如果基類的實(shí)現(xiàn)發(fā)生了改變,則子類的實(shí)現(xiàn)也不得不改變;從基類繼承而來的實(shí)現(xiàn)是靜態(tài)的,不可能在運(yùn)行時(shí)發(fā)生改變,沒有足夠的靈活性。于是就提出了組合/聚合復(fù)用原則,也就是在實(shí)際開發(fā)設(shè)計(jì)中,盡量使用組合/聚合,不要使用類繼承。

  • 總體說來,組合/聚合復(fù)用原則告訴我們:組合或者聚合好過于繼承聚合組合是一種 “黑箱” 復(fù)用,因?yàn)榧?xì)節(jié)對(duì)象的內(nèi)容對(duì)客戶端來說是不可見的。

以上就先分享這些吧,大家如果有其他建議或者看法呢可以在評(píng)論區(qū)留言,有技術(shù)問題可以進(jìn)行探討哦,我開發(fā)10余年了,下面是我的一個(gè)技術(shù)QQ裙,前面是二二六,中間是九八五,后面是九三五。好東西要分享,如果您也是一個(gè)愿意分享的人,那么就加入進(jìn)來吧。

面試中面試官問我設(shè)計(jì)模式的基本原則是什么?的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
新化县| 青州市| 平舆县| 汤阴县| 吴堡县| 蒲江县| 揭东县| 鲁甸县| 合江县| 儋州市| 台湾省| 泸西县| 武安市| 抚宁县| 梧州市| 龙游县| 新田县| 青阳县| 治县。| 北票市| 嘉义市| 荆门市| 尚义县| 新巴尔虎右旗| 平利县| 盖州市| 开原市| 忻城县| 金沙县| 阿拉善右旗| 嵊州市| 九龙坡区| 玉龙| 渭源县| 康乐县| 安岳县| 宁明县| 潍坊市| 岱山县| 齐齐哈尔市| 九江县|