更新時(shí)間:2023-01-29 15:45:21 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1396次
一、什么是設(shè)計(jì)模式
設(shè)計(jì)模式,是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過分類編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。使用設(shè)計(jì)模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性、程序的重用性。
二、設(shè)計(jì)模式分類
創(chuàng)建型模式,共五種:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。
結(jié)構(gòu)型模式,共七種:適配器模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。
行為型模式,共十一種:策略模式、模板方法模式、觀察者模式、迭代子模式、責(zé)任鏈模式、命令模式、備忘錄模式、狀態(tài)模式、訪問者模式、中介者模式、解釋器模式。
三、設(shè)計(jì)模式的六大原則
開放封閉原則(Open Close Principle)
原則思想:盡量通過擴(kuò)展軟件實(shí)體來解決需求變化,而不是通過修改已有的代碼來完成變化
描述:一個(gè)軟件產(chǎn)品在生命周期內(nèi),都會(huì)發(fā)生變化,既然變化是一個(gè)既定的事實(shí),我們就應(yīng)該在設(shè)計(jì)的時(shí)候盡量適應(yīng)這些變化,以提高項(xiàng)目的穩(wěn)定性和靈活性。
優(yōu)點(diǎn):單一原則告訴我們,每個(gè)類都有自己負(fù)責(zé)的職責(zé),里氏替換原則不能破壞繼承關(guān)系的體系。
里氏代換原則(Liskov Substitution Principle)
原則思想:使用的基類可以在任何地方使用繼承的子類,完美的替換基類。
大概意思是:子類可以擴(kuò)展父類的功能,但不能改變父類原有的功能。子類可以實(shí)現(xiàn)父類的抽象方法,但不能覆蓋父類的非抽象方法,子類中可以增加自己特有的方法。
優(yōu)點(diǎn):增加程序的健壯性,即使增加了子類,原有的子類還可以繼續(xù)運(yùn)行,互不影響。
依賴倒轉(zhuǎn)原則(Dependence Inversion Principle)
依賴倒置原則的核心思想是面向接口編程.
依賴倒轉(zhuǎn)原則要求我們在程序代碼中傳遞參數(shù)時(shí)或在關(guān)聯(lián)關(guān)系中,盡量引用層次高的抽象層類,
這個(gè)是開放封閉原則的基礎(chǔ),具體內(nèi)容是:對接口編程,依賴于抽象而不依賴于具體。
接口隔離原則(Interface Segregation Principle)
這個(gè)原則的意思是:使用多個(gè)隔離的接口,比使用單個(gè)接口要好。還是一個(gè)降低類之間的耦合度的意思,從這兒我們看出,其實(shí)設(shè)計(jì)模式就是一個(gè)軟件的設(shè)計(jì)思想,從大型軟件架構(gòu)出發(fā),為了升級和維護(hù)方便。所以上文中多次出現(xiàn):降低依賴,降低耦合。
例如:支付類的接口和訂單類的接口,需要把這倆個(gè)類別的接口變成倆個(gè)隔離的接口
迪米特法則(最少知道原則)(Demeter Principle)
原則思想:一個(gè)對象應(yīng)當(dāng)對其他對象有盡可能少地了解,簡稱類間解耦
大概意思就是一個(gè)類盡量減少自己對其他對象的依賴,原則是低耦合,高內(nèi)聚,只有使各個(gè)模塊之間的耦合盡量的低,才能提高代碼的復(fù)用率。
優(yōu)點(diǎn):低耦合,高內(nèi)聚。
單一職責(zé)原則(Principle of single responsibility)
原則思想:一個(gè)方法只負(fù)責(zé)一件事情。
描述:單一職責(zé)原則很簡單,一個(gè)方法 一個(gè)類只負(fù)責(zé)一個(gè)職責(zé),各個(gè)職責(zé)的程序改動(dòng),不影響其它程序。 這是常識(shí),幾乎所有程序員都會(huì)遵循這個(gè)原則。
優(yōu)點(diǎn):降低類和類的耦合,提高可讀性,增加可維護(hù)性和可拓展性,降低可變性的風(fēng)險(xiǎn)。
四、解釋Java設(shè)計(jì)模式的優(yōu)勢?
設(shè)計(jì)模式可在多個(gè)項(xiàng)目中重復(fù)使用。
設(shè)計(jì)模式提供了有助于定義系統(tǒng)體系結(jié)構(gòu)的解決方案。
設(shè)計(jì)模式記錄了軟件工程經(jīng)驗(yàn)。
設(shè)計(jì)模式為應(yīng)用程序的設(shè)計(jì)提供了透明度。
由于它們是建立在專家軟件開發(fā)人員的知識(shí)和經(jīng)驗(yàn)之上的, 因此它們得到了驗(yàn)證和充分證明。
五、什么是四人幫(GOF)?
1994年, 四位作者Erich Gamma, Ralph Johnson, Richard Hel和John Vlissides出版了一本書, 標(biāo)題為”可重用的面向?qū)ο筌浖脑O(shè)計(jì)模式元素”。本書介紹了軟件開發(fā)中設(shè)計(jì)模式的概念。
這四位作者被稱為”四個(gè)GOF的幫派”。
六、什么是創(chuàng)作模式?
創(chuàng)新設(shè)計(jì)模式與創(chuàng)建對象的方式有關(guān)。在實(shí)例化類時(shí)做出決定時(shí), 將使用創(chuàng)建設(shè)計(jì)模式。
EmpRecord e1 =新的EmpRecord();
由于new關(guān)鍵字用于在Java中創(chuàng)建對象, 因此, 這里我們使用new關(guān)鍵字創(chuàng)建實(shí)例。在某些情況下, 必須根據(jù)程序的性質(zhì)更改對象的性質(zhì)。在這種情況下, 我們應(yīng)該使用創(chuàng)新的設(shè)計(jì)模式來提供更通用, 更靈活的方法。
七、什么是工廠模式?
它是Java中最常用的設(shè)計(jì)模式。
這些設(shè)計(jì)模式屬于創(chuàng)建模式, 因?yàn)樵撃J教峁┝藙?chuàng)建對象的最佳方法之一。
在Factory模式中, 我們不向客戶端公開創(chuàng)建邏輯, 而不會(huì)使用標(biāo)準(zhǔn)接口引用創(chuàng)建的對象。
工廠模式允許子類選擇要?jiǎng)?chuàng)建的對象的類型。
工廠模式也稱為虛擬構(gòu)造函數(shù)。
以上就是“2023年瘋狂推薦的Java設(shè)計(jì)模式面試題目”,你能回答上來嗎?如果想要了解更多的Java面試題相關(guān)內(nèi)容,可以關(guān)注動(dòng)力節(jié)點(diǎn)Java官網(wǎng)。
相關(guān)閱讀
初級 202925
初級 203221
初級 202629
初級 203743