九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
設(shè)計(jì)模式7大設(shè)計(jì)原則

設(shè)計(jì)模式常用的7大原則:

1、單一職責(zé)原則

2、接口隔離原則

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

4、里氏替換原則

5、開(kāi)閉原則

6、迪米特法則

7、合成復(fù)用原則

設(shè)計(jì)模式是為了代碼或者軟件具有更好的1、重用性(相同功能的代碼不用重復(fù)編寫(xiě));2、可讀性(其他程序員可以理解);3、可擴(kuò)展性(增加新功能很方便);4、可靠性(新功能對(duì)原功能沒(méi)有影響);5、代碼出現(xiàn)高內(nèi)聚,低耦合的特性;

單一職責(zé)原則:

介紹:一個(gè)類應(yīng)該只負(fù)責(zé)一個(gè)職責(zé),如果A類負(fù)責(zé)兩個(gè)不同的職責(zé):職責(zé)1和職責(zé)2,那么當(dāng)職責(zé)1修改時(shí),職責(zé)2可能受到干擾,因此,應(yīng)該將A類粒度細(xì)分為A1和A2。

單一職責(zé)分為兩種:類單一職責(zé)和方法單一職責(zé)。

類單一職責(zé)例子:

方法單一職責(zé)例子:

單一職責(zé)原則注意事項(xiàng)和細(xì)節(jié):

1、降低了類的復(fù)雜度;

2、提高了類的可讀性,可維護(hù)性;

3、降低了變更引起的風(fēng)險(xiǎn);

4、通常情況下應(yīng)遵循單一職責(zé)原則,除非代碼邏輯足夠簡(jiǎn)單,才可以違反單一職責(zé)原則,只有類中方法足夠少,才可以違反方法單一職責(zé)原則;

接口隔離原則:

客戶端不應(yīng)該依賴它不需要的接口,即一個(gè)類對(duì)另一個(gè)類的依賴應(yīng)該建立在最小接口之上。

為什么要用接口隔離原則?請(qǐng)看下面的例子:

依賴倒轉(zhuǎn)原則:

依賴倒轉(zhuǎn)原則是指:

1、高層模塊不應(yīng)該依賴于低層模塊,二者都應(yīng)該依賴其抽象;

2、抽象不應(yīng)該依賴于細(xì)節(jié),應(yīng)該細(xì)節(jié)依賴于抽象;

3、依賴倒轉(zhuǎn)原則的中心思想是面向接口編程;

4、依賴倒轉(zhuǎn)原則基于這樣的設(shè)計(jì)理念:相對(duì)于多變的細(xì)節(jié),抽象則穩(wěn)定的多。以抽象為基礎(chǔ)搭建的架構(gòu),比以細(xì)節(jié)為基礎(chǔ)搭建的架構(gòu)要穩(wěn)定的多。在java中,抽象指的是接口或者抽象類。細(xì)節(jié)是指具體的實(shí)現(xiàn)類。

5、使用接口或者抽象類的目的是為了制定好規(guī)范,而不涉及具體的操作,把展現(xiàn)細(xì)節(jié)的任務(wù)交給實(shí)現(xiàn)類去完成。

依賴關(guān)系傳遞的三種方式和應(yīng)用案例:

1、接口傳遞

2、構(gòu)造方法傳遞

3、set方法傳遞。

里氏替換原則:

OO中的繼承性思考和說(shuō)明:

1)繼承包含了這一層含義:父類中已經(jīng)實(shí)現(xiàn)好了的方法,實(shí)際上是在設(shè)定規(guī)范和契約,雖然它不強(qiáng)制它的子類必須遵守這些契約,但是如果子類對(duì)這些已經(jīng)實(shí)現(xiàn)了的方法任意修改,則會(huì)對(duì)它的繼承性造成一定破壞。

2)繼承在給程序設(shè)計(jì)帶來(lái)便利的同時(shí),也帶來(lái)了一定的弊端,比如使用繼承會(huì)給程序帶來(lái)一定的侵入性。程序的可移植性降低,增加了對(duì)象之間的耦合性,如果一個(gè)類被其他的類繼承,則這個(gè)類修改的同時(shí)也得考慮其他子類。并且父類修改后,可能給子類帶來(lái)故障。

3)問(wèn)題提出:在編程中如何合理的使用繼承?==》里氏替換原則(子類繼承父類,最好不要重寫(xiě)父類方法)

基本介紹:

1、里氏替換原則(Lis Substitution Principle)在1988年,由麻省理工學(xué)院的以姓里的女士(這位女士還獲得了2008年的圖靈獎(jiǎng))提出的。

2、對(duì)每個(gè)類型為T(mén)1的對(duì)象o1,都有類型為T(mén)2的對(duì)象o2,使得T1定義的所有程序p在所有的對(duì)象o1都代換成o2時(shí),程序p的行為沒(méi)有發(fā)生任何變化,那么類型T2為類型T1的子類型。換句話說(shuō):所有引用基類的地方必須的透明的使用子類型。

3、在使用繼承時(shí),遵循里氏替換原則,在子類中最好不要重寫(xiě)父類的方法。

4、里氏替換原則原則告訴我們實(shí)際上兩個(gè)類的耦合性增強(qiáng)了,在適當(dāng)?shù)那闆r下可以通過(guò)聚合、組合、依賴來(lái)解決問(wèn)題。或者也可以將類中公共的方法提取出來(lái)成為一個(gè)公共接口,讓其他類也實(shí)現(xiàn)這個(gè)公共接口。

改進(jìn)方案:

開(kāi)閉原則:

1)開(kāi)閉原則(Open Closed Principle)是編程中最基礎(chǔ)、最重要的原則

2)一個(gè)軟件實(shí)體,如類、模塊和函數(shù)應(yīng)該對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉。用抽象構(gòu)建框架,用實(shí)現(xiàn)擴(kuò)展細(xì)節(jié)。

3)當(dāng)軟件需要變化時(shí),盡量通過(guò)擴(kuò)展軟件實(shí)體的行為來(lái)實(shí)現(xiàn)變化,而不是通過(guò)修改原來(lái)的代碼來(lái)實(shí)現(xiàn)變化。

4)編程中使用其他原則,以及使用設(shè)計(jì)模式的目的就是遵循開(kāi)閉原則。

下圖是非人類使用方法:

這種方法最大的問(wèn)題是如果添加類的修改代碼。

改進(jìn)方案:

這樣新增一個(gè)類就無(wú)需修改使用方代碼。

迪米特法則:

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

2)類與類關(guān)系越密切,耦合度越大。

3)迪米特法則(Demeter Principle)也叫最少知道原則,即一個(gè)類應(yīng)該對(duì)自己依賴的類知道的越少越好。

也就是說(shuō)對(duì)被依賴的類不管多復(fù)雜,都應(yīng)該將邏輯封裝在類的內(nèi)部,對(duì)外除了提供public的方法外,不對(duì)外泄露任何信息。

4)迪米特法則還有個(gè)更簡(jiǎn)單的定義:只與直接朋友通信。

5)直接朋友:每個(gè)對(duì)象都與其他對(duì)象有耦合關(guān)系,只要兩個(gè)對(duì)象之間有耦合關(guān)系,我們就說(shuō)對(duì)象之間是朋友關(guān)系。耦合的方式有很多,其中包括:關(guān)聯(lián)、泛化、實(shí)現(xiàn)、依賴、聚合、耦合(下一章節(jié)要講)等等。其中,我們稱出現(xiàn)在成員變量、方法參數(shù)、方法中的變量、方法返回值的類為直接朋友,而出現(xiàn)在局部變量中的類不是直接的朋友。也就是說(shuō)陌生的類最好還是不要以局部變量的方式出現(xiàn)在類的內(nèi)部。

迪米特法則的需要注意事項(xiàng)和細(xì)節(jié):

1)迪米特法則的核心思想時(shí)降低類和類之間的耦合

2)但要注意:由于每個(gè)類都減少不必要的依賴,因此迪米特法則只是要求降低類間(對(duì)象)間的耦合關(guān)系,并不是要求完全沒(méi)有依賴關(guān)系。

合成復(fù)用原則:

盡量使用合成/聚合的方式,少用繼承。

設(shè)計(jì)模式的核心思想:

1)找出應(yīng)用中可能變化之處,把他們獨(dú)立出來(lái),不要和那些不需要變化的代碼混在一起。

2)針對(duì)接口編程,而不是針對(duì)實(shí)現(xiàn)細(xì)節(jié)編程。

3)為了實(shí)現(xiàn)交互對(duì)象之間的松耦合而努力。

UML圖:

1)uml--unified modeling language UML(統(tǒng)一建模語(yǔ)言)是一種用于軟件分析和設(shè)計(jì)的語(yǔ)言工具。它用于幫助軟件開(kāi)發(fā)人員進(jìn)行思考和記錄的結(jié)果。

2)uml本身是一套符號(hào)化的規(guī)定,就像數(shù)學(xué)符號(hào)和化學(xué)符號(hào)一樣,這些詞符號(hào)用于描述軟件模型中的各個(gè)元素和他們之間的關(guān)系,比如類、接口、實(shí)現(xiàn)、依賴、組合、聚合等。如下圖:

使用UML來(lái)建模,常用的工具有:Rational rose、億圖圖示(國(guó)產(chǎn)),idea插件有plaintUML,eclipse AmaterasUML。

畫(huà)UML圖

劃UML圖和寫(xiě)文章差不多,目的都是讓別人看,關(guān)鍵在于思路和條理清晰,UML分類:

1)用例圖(USER CASE)

2)靜態(tài)結(jié)構(gòu)圖:類圖、包圖、對(duì)象圖、組件圖、部署圖;

3)動(dòng)態(tài)行為圖:交互圖(時(shí)序圖和協(xié)作圖)、狀態(tài)圖、活動(dòng)圖;

說(shuō)明:

1)類圖是描述類和類之間的關(guān)系的,是UML圖最核心的。

2)在講解UML類圖設(shè)計(jì)模式時(shí),我們必然會(huì)使用到類圖,為了能夠讓學(xué)員把設(shè)計(jì)模式學(xué)要到位,需要先給大家講解類圖。

uml類圖:

1)類圖是用于描述系統(tǒng)中的類本身的組成和類對(duì)象之間的靜態(tài)關(guān)系。

2)類之間的關(guān)系:依賴、泛化、實(shí)現(xiàn)、關(guān)聯(lián)、組合和聚合。

類和類中的關(guān)系

依賴:

只要在類中使用到了對(duì)方,我們就說(shuō)他們之間存在存在依賴關(guān)系。如果沒(méi)有對(duì)方,可能連編譯都通過(guò)不了。

泛化:

泛化是依賴關(guān)系的特例。泛化就是繼承。

實(shí)現(xiàn):

實(shí)現(xiàn)是依賴關(guān)系的特例。A類實(shí)現(xiàn)了B接口或者抽象類,我們就說(shuō)A和B之間是實(shí)現(xiàn)關(guān)系。

關(guān)聯(lián):

關(guān)聯(lián)關(guān)系實(shí)際上是類與類之間的關(guān)聯(lián)關(guān)系,它是依賴關(guān)系的特例,具有導(dǎo)向性,即雙向關(guān)系和單向關(guān)系;

關(guān)聯(lián)關(guān)系具有多重性,如'1'(表示有且只有一個(gè)),'0......'(表示0個(gè)或多個(gè)),'0,1'(表示0個(gè)或1個(gè)),'n...m'(表示從n個(gè)到m個(gè)都可以),'m...'(表示至少m個(gè))

單向一對(duì)一關(guān)系:

雙向的1對(duì)1關(guān)系:

聚合:

聚合表示的是整體和部分的關(guān)系,整體和部分可以分開(kāi),聚合關(guān)系是關(guān)聯(lián)關(guān)系的特例。所以他們具有關(guān)聯(lián)關(guān)系的導(dǎo)航性和多重性。如一個(gè)學(xué)生有一個(gè)學(xué)號(hào)組成,學(xué)生和學(xué)號(hào)是可以分開(kāi)的。使用帶空菱形的實(shí)線來(lái)表示。

如果我們認(rèn)為學(xué)生和學(xué)號(hào)是分不開(kāi)的,則升級(jí)為組合關(guān)系。

組合:

組合也是表示的是整體和部分的關(guān)系,整體和部分不可以分開(kāi),組合關(guān)系也是關(guān)聯(lián)關(guān)系的特例。所以他們具有關(guān)聯(lián)關(guān)系的導(dǎo)航性和多重性。如一個(gè)人Persion有一個(gè)頭部Head組成,人和頭部是不可以分開(kāi)的。使用黑色菱形的實(shí)線來(lái)表示。

設(shè)計(jì)模式三大類:

設(shè)計(jì)模式分為3大類,共23種

1)創(chuàng)建型模式:?jiǎn)卫J?、工廠模式、抽象工廠模式、原型模式、建造者模式;

2)結(jié)構(gòu)型模式:適配器模式、橋接模式、裝飾模式、組合模式、外觀模式、享元模式、代理模式;

3)行為模式:模板方法模式、命令模式、訪問(wèn)者模式、迭代器模式、觀察者模式、中介者模式、備忘錄模式、解釋器模式、狀態(tài)模式、策略模式、責(zé)任鏈模式(職責(zé)鏈模式);

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
二十三種設(shè)計(jì)模式修煉手冊(cè)
設(shè)計(jì)模式隨筆系列:開(kāi)篇
面向?qū)ο笤O(shè)計(jì)框架
設(shè)計(jì)模式-概述
重溫設(shè)計(jì)模式系列(三)面向?qū)ο笤O(shè)計(jì)原則
23種設(shè)計(jì)模式入門(mén) - 設(shè)計(jì)模式概述及七大原則
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服