国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

設(shè)計(jì)模式的設(shè)計(jì)原則

這篇具有很好參考價(jià)值的文章主要介紹了設(shè)計(jì)模式的設(shè)計(jì)原則。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

為什么需要設(shè)計(jì)模式?
我的理解設(shè)計(jì)模式就是一種針對(duì)某種問題的套路,是一套被反復(fù)使用,多數(shù)人所知曉的,經(jīng)過分類編目的,代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。

1.開閉原則
1.1 定義:

????一個(gè)軟件實(shí)體應(yīng)當(dāng)對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉,即軟件實(shí)體應(yīng)盡量在不修改原有代碼下進(jìn)行擴(kuò)展。
????軟件實(shí)體:指一個(gè)軟件模板,一個(gè)由多個(gè)類組成的局部結(jié)構(gòu)或一個(gè)獨(dú)立的類。

1.2 個(gè)人理解

????就是對(duì)于一個(gè)程序來說,舉個(gè)例子

  if(type==1){
     //語句
  }eles if(type==2){
    //語句
  }else if(type==3){
  //語句
  }

對(duì)于這個(gè)代碼來說,type的值就限制在[1,2,3],如果我們后面還想要type==4,那我們就需要去在這段代碼去更改,但這樣就會(huì)違背開閉原則。這個(gè)原則是用來約束或者改進(jìn)代碼業(yè)務(wù),對(duì)于一個(gè)很復(fù)雜的項(xiàng)目來說,如果添加一個(gè)功能,需要去找很多其他的源碼去修改,不是很麻煩嗎

1.3 一般解決

????對(duì)于解決這種問題,一般使用抽象類去拓展業(yè)務(wù),讓抽象類作為中轉(zhuǎn)站去添加,這樣就只需要添加而不需要修改
設(shè)計(jì)模式的設(shè)計(jì)原則,設(shè)計(jì)模式

2. 里氏代換原則

2.1 定義

????所有引用基(父)類的地方必須能夠透明的使用其子類。

2.2 個(gè)人理解

????前提:一個(gè)方法可以使用父類對(duì)象,結(jié)果:這個(gè)方法也可以使用其子類對(duì)象。反過來,則不行。

注意項(xiàng):

  • 子類的所有的方法都必須在父類去聲明,或者子類全部實(shí)現(xiàn)父類中所聲明的方法,而一般為了保證程序的可拓展性,一般由父類去定義(抽象類)
  • 一般在使用這個(gè)原則時(shí),盡量把父類設(shè)計(jì)為抽象類或者接口,讓子類去實(shí)現(xiàn)或者繼承父類,并去實(shí)現(xiàn)父類的方法,使用實(shí)例時(shí)就用子類,這樣就很方便去添加子類和拓張功能。
  • 在java語言中,在編譯階段,java程序會(huì)檢查一個(gè)程序是否符合里氏代換原則,這是一個(gè)與實(shí)現(xiàn)無關(guān)地,純粹就是語法上的檢測(cè),但是這種很有限就是了
2.3 例子

????就如同普通和vip都有發(fā)送郵箱這個(gè)功能,就將其提取處理,然后讓子類拓展
設(shè)計(jì)模式的設(shè)計(jì)原則,設(shè)計(jì)模式

3. 依賴倒轉(zhuǎn)原則

3.1 定義

????抽象不應(yīng)該依賴細(xì)節(jié),細(xì)節(jié)應(yīng)該依賴抽象,針對(duì)接口編程。

3.2 個(gè)人理解

????就是高層模塊(業(yè)務(wù)邏輯)不應(yīng)該依賴于底層模塊(具體實(shí)現(xiàn)),而是通過抽象類或者接口依賴,而具體實(shí)現(xiàn)類依賴于抽象類。,就是在代碼傳遞參數(shù)時(shí)或者關(guān)聯(lián)關(guān)系中,盡量引用高層次的抽象類,然后把具體類可以寫在配置中。

3.3 例子

????首先對(duì)于這樣一個(gè)功能模塊,我么如果去添加新的拓展就會(huì)很麻煩,如word
設(shè)計(jì)模式的設(shè)計(jì)原則,設(shè)計(jì)模式
但是,如果我們把這么這些拓展功能抽象出來,然后在使用時(shí),使用抽象類,在配置文件中配置相應(yīng)的類就行了。
設(shè)計(jì)模式的設(shè)計(jì)原則,設(shè)計(jì)模式

4. 接口隔離原則

4.1 定義

????使用多個(gè)專門的接口,而不使用單一的總接口,即客戶端不應(yīng)該依賴那些它不需要的接口
????當(dāng)一個(gè)接口過大時(shí),我們需要將它分割成一些更細(xì)小的接口,使用該接口的客戶端僅需要知道與相關(guān)的方法

4.2 個(gè)人理解

????大概念:接口理解成一個(gè)類型提供的所有方法特征的集合→理解成角色→一個(gè)接口代表一個(gè)角色→隔離
????小概念:特定語言的接口,Isp思想就是將接口盡量獨(dú)立出來,為用戶提供盡量小的單一接口,而大接口中僅放不同小接口。

4.3 例子

????如同這個(gè)一般,各種功能都擠在一路去了,對(duì)于某些功能不需要的在里面
設(shè)計(jì)模式的設(shè)計(jì)原則,設(shè)計(jì)模式
????就需要我們?nèi)ジ鶕?jù)功能去分開接口,這樣就不會(huì)擠在一起了。
設(shè)計(jì)模式的設(shè)計(jì)原則,設(shè)計(jì)模式

5. 合成復(fù)用原則

5.1 定義

????盡量使用對(duì)象組合,而不是繼承來達(dá)到復(fù)用的目的。

5.2 個(gè)人理解

????盡量考慮組合而非繼承,除非嚴(yán)格遵循里氏代換原則,但是繼承則會(huì)暴露父類(基類)細(xì)節(jié)給子類導(dǎo)致封裝性被破壞、同時(shí)繼承而來的靈活度不夠,是靜態(tài),不是動(dòng)態(tài)。同時(shí)在發(fā)生變化時(shí),組合對(duì)于其他類的影響較小。
方式:比較簡(jiǎn)單,從繼承變成式關(guān)聯(lián),用依賴注入或者setter注入注入子類對(duì)象就行

5.3 例子

????對(duì)于這樣一個(gè)例子,如果要拓展功能的話,添加一個(gè)新的數(shù)據(jù)庫種類的話,那么,DAO類代碼也會(huì)改變。它的方法繼承于父類。
設(shè)計(jì)模式的設(shè)計(jì)原則,設(shè)計(jì)模式
不過如果改為關(guān)聯(lián)關(guān)系的話,DBUtil的功能就可以讓子類通過依賴注入去擴(kuò)展。
設(shè)計(jì)模式的設(shè)計(jì)原則,設(shè)計(jì)模式

6. 迪米特法制

6.1 定義

????一個(gè)軟件實(shí)體應(yīng)當(dāng)盡量少地于其他實(shí)體類發(fā)生相互作用。
????如果一個(gè)系統(tǒng)符合迪米特法則,那么當(dāng)其中某一個(gè)模塊發(fā)生修改時(shí),就會(huì)盡量少地影響其他模塊,擴(kuò)
展會(huì)相對(duì)容易,這是對(duì)軟件實(shí)體之間通信的限制,迪米特法則要求限制軟件實(shí)體之間通信的寬度和深
度。迪米特法則可降低系統(tǒng)的耦合度,使類與類之間保持松散的耦合關(guān)系

6.2 個(gè)人理解

對(duì)象的朋友定義:

  • 當(dāng)前對(duì)象本身(this);
  • 以參數(shù)形式傳入到當(dāng)前對(duì)象方法中的對(duì)象,
  • 當(dāng)前對(duì)象的成員對(duì)象;
  • 如果當(dāng)前對(duì)象的成員對(duì)象是一個(gè)集合,那么集合中的元素也都是朋友,
  • 當(dāng)前對(duì)象所創(chuàng)建的對(duì)象。

????任何一個(gè)對(duì)象,如果滿足上面的條件之一,就是當(dāng)前對(duì)象的“朋友”,否則就是“陌生人”。在應(yīng)用迪米
特法則時(shí),一個(gè)對(duì)象只能與直接朋友發(fā)生交互,不要與“陌生人”發(fā)生直接交互,這樣做可以降低系統(tǒng)
的耦合度,一個(gè)對(duì)象的改變不會(huì)給太多其他對(duì)象帶來影響
????也就是盡量就是對(duì)象與對(duì)象之間的聯(lián)系。

6.3 例子

????對(duì)于這樣的一個(gè)ui組件聯(lián)系的話,它們之間聯(lián)系很復(fù)雜,改一個(gè)可能改全部
設(shè)計(jì)模式的設(shè)計(jì)原則,設(shè)計(jì)模式
但我們用一個(gè)統(tǒng)一的聯(lián)系類去管理的話,就減少了它們之間的相互影響。
設(shè)計(jì)模式的設(shè)計(jì)原則,設(shè)計(jì)模式文章來源地址http://www.zghlxwxcb.cn/news/detail-705161.html

到了這里,關(guān)于設(shè)計(jì)模式的設(shè)計(jì)原則的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 設(shè)計(jì)模式——設(shè)計(jì)模式以及六大原則概述

    設(shè)計(jì)模式——設(shè)計(jì)模式以及六大原則概述

    設(shè)計(jì)模式代表有經(jīng)驗(yàn)的面向?qū)ο筌浖_發(fā)人員使用的最佳實(shí)踐。 設(shè)計(jì)模式是軟件開發(fā)人員在軟件開發(fā)過程中面臨的一般問題的解決方案。 這些解決方案是由許多軟件開發(fā)人員在相當(dāng)長(zhǎng)的時(shí)間內(nèi)通過試錯(cuò)獲得的。 在 1994 年,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四

    2024年02月13日
    瀏覽(22)
  • 設(shè)計(jì)模式的設(shè)計(jì)原則

    設(shè)計(jì)模式的設(shè)計(jì)原則

    為什么需要設(shè)計(jì)模式? 我的理解設(shè)計(jì)模式就是一種針對(duì)某種問題的套路,是一套被反復(fù)使用,多數(shù)人所知曉的,經(jīng)過分類編目的,代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。 1.開閉原則 1.1 定義: ????一個(gè)軟件實(shí)體應(yīng)當(dāng)對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉,即軟件實(shí)體應(yīng)盡量在不修改原有代碼下進(jìn)行擴(kuò)展

    2024年02月09日
    瀏覽(18)
  • 設(shè)計(jì)模式-原則篇-01.開閉原則

    設(shè)計(jì)模式-原則篇-01.開閉原則

    ? 可以把設(shè)計(jì)模式理解為一套比較成熟并且成體系的建筑圖紙,經(jīng)過多次編碼檢驗(yàn)?zāi)壳翱磥硎褂眯Ч€不錯(cuò)的軟件設(shè)計(jì)方案。適用的場(chǎng)景也比較廣泛,在使用具體的設(shè)計(jì)模式之前先要學(xué)習(xí)軟件設(shè)計(jì)的基礎(chǔ) “軟件設(shè)計(jì)原則”,后面的23個(gè)設(shè)計(jì)模式都是遵從“軟件設(shè)計(jì)原則演變而

    2024年02月09日
    瀏覽(27)
  • 軟件設(shè)計(jì)模式原則(二)開閉原則

    軟件設(shè)計(jì)模式原則(二)開閉原則

    繼續(xù)講解第二個(gè)重要的設(shè)計(jì)模式原則——開閉原則~ 一.定義 ????????開閉原則,在面向?qū)ο缶幊填I(lǐng)域中,規(guī)定“軟件中的對(duì)象(類,模塊,函數(shù)等等)應(yīng)該對(duì)于擴(kuò)展是開放的,但是對(duì)于修改是封閉的”,這意味著一個(gè)實(shí)體是允許在不改變它的源代碼的前提下變更它的行為

    2024年02月06日
    瀏覽(19)
  • 軟件設(shè)計(jì)原則與設(shè)計(jì)模式

    軟件設(shè)計(jì)原則與設(shè)計(jì)模式

    設(shè)計(jì)中各各原則同時(shí)兼有或沖突,不存在包含所有原則的設(shè)計(jì) 一:?jiǎn)我宦氊?zé)原則又稱單一功能原則 核心:解耦和增強(qiáng)內(nèi)聚性(高內(nèi)聚,低耦合) 描述:類被修改的幾率很大,因此應(yīng)該專注于單一的功能。如果你把多個(gè)功能放在同一個(gè)類中,功能之間就形成了關(guān)聯(lián)。 二:開閉

    2024年02月10日
    瀏覽(17)
  • 設(shè)計(jì)模式之六大設(shè)計(jì)原則

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

    學(xué)習(xí)的最大理由是想擺脫平庸,早一天就多一份人生的精彩;遲一天就多一天平庸的困擾。各位小伙伴,如果您: 想系統(tǒng)/深入學(xué)習(xí)某技術(shù)知識(shí)點(diǎn)… 一個(gè)人摸索學(xué)習(xí)很難堅(jiān)持,想組團(tuán)高效學(xué)習(xí)… 想寫博客但無從下手,急需寫作干貨注入能量… 熱愛寫作,愿意讓自己成為更好

    2024年02月02日
    瀏覽(21)
  • 設(shè)計(jì)模式】引言-六大設(shè)計(jì)原則

    ● 概念:僅有一個(gè)引起其變化的原因。 ● 個(gè)人理解:一個(gè)類中應(yīng)該是一組相關(guān)性很高的函數(shù)及數(shù)據(jù)的封裝 主觀性較強(qiáng),和起名一樣困難,一個(gè)方法放在ClassA合理還是放在ClassB合理? ● 概念:一個(gè)軟件實(shí)體應(yīng)當(dāng)對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉。即軟件實(shí)體應(yīng)盡量在不修改原有代碼

    2023年04月24日
    瀏覽(20)
  • 設(shè)計(jì)原則及設(shè)計(jì)模式基礎(chǔ)

    設(shè)計(jì)原則及設(shè)計(jì)模式基礎(chǔ)

    ?設(shè)計(jì)模式是一套被反復(fù)使用的、多數(shù)人知曉的、經(jīng)過分類編目的代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié),使用設(shè)計(jì)模式是為了可以重用代碼,讓代碼更容易被他人理解并且提高代碼的可靠性。 GoF(Gang Of Four 四人組,指4位著名軟件工程學(xué)者),在1994年歸納發(fā)表了23中在軟件開發(fā)中使用頻率較高的

    2024年02月15日
    瀏覽(20)
  • 設(shè)計(jì)模式的六大設(shè)計(jì)原則

    一個(gè)類只負(fù)責(zé)一個(gè)單一明確的職責(zé)。如果一個(gè)類同時(shí)負(fù)責(zé)多個(gè)職責(zé),來自職責(zé)A的需求變更引起的修改可能會(huì)導(dǎo)致職責(zé)B的功能發(fā)生故障。 比如說一個(gè)類T原本是符合單一職責(zé)的,后來因?yàn)槟撤N原因或者是需求變更了,需要將職責(zé)P細(xì)分為顆粒度更細(xì)的職責(zé)P1和職責(zé)P2,這時(shí)候可以

    2024年02月09日
    瀏覽(31)
  • 設(shè)計(jì)模式原則之:?jiǎn)我宦氊?zé)模式

    ? 對(duì)類來說的,即一個(gè)類應(yīng)該只負(fù)責(zé)一項(xiàng)職責(zé)。如類A負(fù)責(zé)兩個(gè)不同的職責(zé),職責(zé)1,職責(zé)2。當(dāng)職責(zé)1需求變更而改變A時(shí),可能造成職責(zé)2智行錯(cuò)誤,所以要將類A的粒度分解為A1,A2

    2024年02月15日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包