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