Java面試題簡(jiǎn)述一下面向?qū)ο蟮牧瓌t一法則_第1頁(yè)
Java面試題簡(jiǎn)述一下面向?qū)ο蟮牧瓌t一法則_第2頁(yè)
Java面試題簡(jiǎn)述一下面向?qū)ο蟮牧瓌t一法則_第3頁(yè)
Java面試題簡(jiǎn)述一下面向?qū)ο蟮牧瓌t一法則_第4頁(yè)
Java面試題簡(jiǎn)述一下面向?qū)ο蟮牧瓌t一法則_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

本文格式為Word版,下載可任意編輯——Java面試題簡(jiǎn)述一下面向?qū)ο蟮摹绷瓌t一法則”Java面試題簡(jiǎn)述一下面向?qū)ο蟮摹绷敲匆环敲础?/p>

引導(dǎo)語(yǔ);面向?qū)ο笫窃诓季只O(shè)計(jì)方法展現(xiàn)好多問題的處境下應(yīng)運(yùn)而生的。以下是我共享給大家的Java面試題簡(jiǎn)述一下面向?qū)ο蟮?六原那么一法那么',接待閱讀學(xué)習(xí)!

簡(jiǎn)述一下面向?qū)ο蟮?六原那么一法那么'

答:

-單一職責(zé)原那么:一個(gè)類只做它該做的事情。單一職責(zé)原那么想表達(dá)的就是'高內(nèi)聚',寫代碼最終極的原那么只有六個(gè)字'高內(nèi)聚、低耦合',就宛如葵花寶典或辟邪劍譜的中心思想就八個(gè)字'欲練此功必先自宮',所謂的高內(nèi)聚就是一個(gè)代碼模塊只完成一項(xiàng)功能,在面向?qū)ο笾校僭O(shè)只讓一個(gè)類完成它該做的事,而不涉及與它無(wú)關(guān)的領(lǐng)域就是踐行了高內(nèi)聚的原那么,這個(gè)類就只有單一職責(zé)。我們都知道一句話叫'由于專注,所以專業(yè)',一個(gè)對(duì)象假設(shè)承受太多的職責(zé),那么注定它什么都做不好。這個(gè)世界上任何好的東西都有兩個(gè)特征,一個(gè)是功能單一,好的相機(jī)十足不是電視購(gòu)物里面賣的那種一個(gè)機(jī)器有一百多種功能的,它根本上只能照相;另一個(gè)是模塊化,好的自行車是組裝車,從減震叉、剎車到變速器,全體的部件都是可以拆卸和重新組裝的,好的乒乓球拍也不是成品拍,確定是底板和膠皮可以拆分和自行組裝的,一個(gè)好的軟件系統(tǒng),它里面的每個(gè)功能模塊也理應(yīng)是可以輕易的拿到其他系統(tǒng)中使用的,這樣才能實(shí)現(xiàn)軟件復(fù)用的目標(biāo)。

-開閉原那么:軟件實(shí)體應(yīng)當(dāng)對(duì)擴(kuò)開展放,對(duì)修改關(guān)閉。在夢(mèng)想的狀態(tài)下,當(dāng)我們需要為一個(gè)軟件系統(tǒng)增加新功能時(shí),只需要從原來(lái)的系統(tǒng)派生出一些新類就可以,不需要修改原來(lái)的任何一行代碼。要做到開閉有兩個(gè)要點(diǎn):①抽象是關(guān)鍵,一個(gè)系統(tǒng)中假設(shè)沒有抽象類或接口系統(tǒng)就沒有擴(kuò)展點(diǎn);②封裝可變性,將系統(tǒng)中的各種可變因素封裝到一個(gè)繼承布局中,假設(shè)多個(gè)可變因素混雜在一起,系統(tǒng)將變得繁雜而換亂,假設(shè)不領(lǐng)會(huì)如何封裝可變性,可以參考《設(shè)計(jì)模式精解》一書中對(duì)橋梁模式的講解的章節(jié)。

-憑借倒轉(zhuǎn)原那么:面向接口編程。該原那么說得直白和概括一些就是聲明方法的參數(shù)類型、方法的返回類型、變量的引用類型時(shí),盡可能使用抽象類型而不用概括類型,由于抽象類型可以被它的任何一個(gè)子類型所替代,請(qǐng)參考下面的里氏替換原那么。

里氏替換原那么:任何時(shí)候都可以用子類型替換掉父類型。關(guān)于里氏替換原那么的描述,BarbaraLiskov女士的描述比這個(gè)要繁雜得多,但簡(jiǎn)樸的說就是能用父類型的地方就確定能使用子類型。里氏替換原那么可以檢查繼承關(guān)系是否合理,假設(shè)一個(gè)繼承關(guān)系違背了里氏替換原那么,那么這個(gè)繼承關(guān)系確定是錯(cuò)誤的,需要對(duì)代碼舉行重構(gòu)。例如讓貓繼承狗,或者狗繼承貓,又或者讓正方形繼承長(zhǎng)方形都是錯(cuò)誤的繼承關(guān)系,由于你很輕易找到違反里氏替換原那么的場(chǎng)景。需要留神的是:子類確定是增加父類的才能而不是裁減父類的才能,由于子類比父類的'才能更多,把才能多的對(duì)象當(dāng)成才能少的對(duì)象來(lái)用當(dāng)然沒有任何問題。

-接口隔離原那么:接口要小而專,絕不能大而全。臃腫的接口是對(duì)接口的污染,既然接口表示才能,那么一個(gè)接口只理應(yīng)描述一種才能,接口也理應(yīng)是高度內(nèi)聚的。例如,琴棋書畫就理應(yīng)分別設(shè)計(jì)為四個(gè)接口,而不應(yīng)設(shè)計(jì)成一個(gè)接口中的四個(gè)方法,由于假設(shè)設(shè)計(jì)成一個(gè)接口中的四個(gè)方法,那么這個(gè)接口很難用,終究琴棋書畫四樣都精通的人還是少數(shù),而假設(shè)設(shè)計(jì)成四個(gè)接口,會(huì)幾項(xiàng)就實(shí)現(xiàn)幾個(gè)接口,這樣的話每個(gè)接口被復(fù)用的可能性是很高的。Java中的接口代表才能、代表商定、代表角色,能否正確的使用接口確定是編程水平上下的重要標(biāo)識(shí)。

-合成聚合復(fù)用原那么:優(yōu)先使用聚合或合成關(guān)系復(fù)用代碼。通過繼承來(lái)復(fù)用代碼是面向?qū)ο蟪绦蛟O(shè)計(jì)中被濫用得最多的東西,由于全體的教科書都無(wú)一例外的對(duì)繼承舉行了鼓吹從而誤導(dǎo)了初學(xué)者,類與類之間簡(jiǎn)樸的說有三種關(guān)系,Is-A關(guān)系、Has-A關(guān)系、Use-A關(guān)系,分別代表繼承、關(guān)聯(lián)和憑借。其中,關(guān)聯(lián)關(guān)系根據(jù)其關(guān)聯(lián)的強(qiáng)度又可以進(jìn)一步劃分為關(guān)聯(lián)、聚合和合成,但說白了都是Has-A關(guān)系,合成聚合復(fù)用原那么想表達(dá)的是優(yōu)先考慮Has-A關(guān)系而不是Is-A關(guān)系復(fù)用代碼,理由嘛可以自己從百度上找到一萬(wàn)個(gè)理由,需要說明的是,即使在Java的API中也有不少濫用繼承的例子,例如Properties類繼承了Hashtable類,Stack類繼承了Vector類,這些繼承明顯就是錯(cuò)誤的,更好的做法是在Properties類中放置一個(gè)Hashtable類型的成員并且將其鍵和值都設(shè)置為字符串來(lái)存儲(chǔ)數(shù)據(jù),而Stack類的設(shè)計(jì)也理應(yīng)是在Stack類中放一個(gè)Vector對(duì)象來(lái)存儲(chǔ)數(shù)據(jù)。記住:任何時(shí)候都不要繼承工具類,工具是可以擁有并可以使用的,而不是拿來(lái)繼承的。

-迪米特法那么:迪米特法那么又叫最少學(xué)識(shí)原那么,一個(gè)對(duì)象應(yīng)當(dāng)對(duì)其他對(duì)象有盡可能少的了解。迪米特法那么簡(jiǎn)樸的說就是如何做到'低耦合',門面模式和調(diào)停者模式就是對(duì)迪米特法那么的踐行。對(duì)于門面模式可以舉一個(gè)簡(jiǎn)樸的例子,你去一家公司洽談業(yè)務(wù),你不需要了解這個(gè)公司內(nèi)部是如何運(yùn)作的,你甚至可以對(duì)這個(gè)公司一無(wú)所知,去的時(shí)候只需要找到公司入口處的前臺(tái)美女,報(bào)告她們你要做什么,她們會(huì)找到適合的人跟你接洽,前臺(tái)的美女就是公司這個(gè)系統(tǒng)的門面。再繁雜的系統(tǒng)都可以為用戶供給一個(gè)簡(jiǎn)樸的門面,JavaWeb開發(fā)中作為前端操縱器的Servlet或Filter不就是一個(gè)門面嗎,欣賞器對(duì)服務(wù)器的運(yùn)作方式一無(wú)所知,但是通過前端操縱器就能夠根據(jù)你的苦求得到相應(yīng)的服務(wù)。調(diào)停者模式也可以舉一個(gè)簡(jiǎn)樸的例子來(lái)說明,例如一臺(tái)計(jì)算機(jī),CPU、內(nèi)存、硬盤、顯卡、聲卡各種設(shè)備需要相互合作才能很好的工作,但是假設(shè)這些東西都直接連接到一起,計(jì)算機(jī)的布線將奇怪繁雜,在這

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論