設(shè)計模式應(yīng)該這樣學(xué)

以下文章來源于公眾號“程序員求職之路”

設(shè)計模式是人們在面對同類型軟件工程設(shè)計問題所總結(jié)出的一些有用的經(jīng)驗锅劝。

模式不是代碼,而是某類問題的通用設(shè)計解決方案间聊。這篇文章以面試問答的角度帶你了解設(shè)計模式這塊知識笆焰。


1蓬豁、請列舉出在 JDK 中幾個常用的設(shè)計模式谆奥?

①單例模式(Singleton pattern)用于 Runtime眼坏,Calendar 和其他的一些類中;

②工廠模式(Factory pattern)被用于各種不可變的類如Boolean酸些,像Boolean.valueOf宰译;

③觀察者模式(Observer pattern)被用于 Swing 和很多的事件監(jiān)聽中;

④裝飾器設(shè)計模式(Decorator design pattern)被用于多個 Java IO 類中擂仍。


2囤屹、什么是設(shè)計模式???

設(shè)計模式是世界上各種各樣程序員用來解決特定設(shè)計問題的嘗試和測試的方法逢渔。設(shè)計模式是代碼可用性的延伸。


3乡括、Java 中什么叫單例設(shè)計模式肃廓?請用 Java 寫出線程安全的單例模式

單例模式重點在于在整個系統(tǒng)上共享一些創(chuàng)建時較耗資源的對象。整個應(yīng)用中只維護(hù)一個特定類實例诲泌,它被所有組件共同使用盲赊。

Java.lang.Runtime 是單例模式的經(jīng)典例子。從 Java5開始你可以使用枚舉(enum)來實現(xiàn)線程安全的單例敷扫。


4哀蘑、在Java中,什么叫觀察者設(shè)計模式(observer design pattern)葵第?

觀察者模式是定義對象間的一種一對多依賴關(guān)系绘迁,使得每當(dāng)一個對象狀態(tài)發(fā)生改變時,其相關(guān)依賴對象皆得到通知并被自動更新卒密。

觀察者模式又叫做發(fā)布-訂閱(Publish/Subscribe)模式缀台、模型-視圖(Model/View)模式、源-監(jiān)聽器(Source/Listener)模式或從屬者(Dependents)模式哮奇。


5膛腐、使用工廠模式最主要的好處是什么?在哪里使用鼎俘?

工廠模式的最大好處是增加了創(chuàng)建對象時的封裝層次哲身。如果你使用工廠來創(chuàng)建對象,之后你可以使用更高級和更高性能的實現(xiàn)來替換原始的產(chǎn)品實現(xiàn)或類贸伐,這不需要在調(diào)用層做任何修改勘天。?


6、什么是適配器模式?

適配器模式是將一個類的接口變成客戶端所期望的另一種接口误辑,從而使原本因接口不匹配而無法一起工作的兩個類能夠在一起工作沧踏。

優(yōu)點:

可以讓兩個沒有關(guān)聯(lián)的類一起運行,起著中間轉(zhuǎn)換的作用巾钉;

靈活性好翘狱,不會破壞原有的系統(tǒng)。

缺點:

過多地使用適配器砰苍,容易使代碼結(jié)構(gòu)混亂潦匈,如明明看到調(diào)用的是 A 接口,內(nèi)部調(diào)用的卻是 B 接口的實現(xiàn)赚导。

以生活中的例子來說茬缩,比如有一個充電器是 MicroUSB 接口,而手機充電口卻是 TypeC 的吼旧,這個時候就需要一個把 MicroUSB 轉(zhuǎn)換成 TypeC 的適配器凰锡。


7、在Java中圈暗,為什么不允許從靜態(tài)方法中訪問非靜態(tài)變量掂为?

Java 中不能從靜態(tài)上下文訪問非靜態(tài)數(shù)據(jù)只是因為非靜態(tài)變量是跟具體的 對象實例關(guān)聯(lián)的,而靜態(tài)的卻沒有和任何實例關(guān)聯(lián)员串。


8勇哗、Spring 中都使用了哪些設(shè)計模式?

Spring 框架使用的設(shè)計模式如下寸齐。

代理模式:在 AOP 中有使用

單例模式:bean 默認(rèn)是單例模式

模板方法模式:jdbcTemplate

工廠模式:BeanFactory

觀察者模式:Spring 事件驅(qū)動模型就是觀察者模式很經(jīng)典的一個應(yīng)用欲诺,比如,ContextStartedEvent 就是 ApplicationContext 啟動后觸發(fā)的事件

適配器模式:Spring MVC 中也是用到了適配器模式適配 Controller


9渺鹦、在 Java 中扰法,什么時候用重載,什么時候用重寫海铆?

如果你看到一個類的不同實現(xiàn)有著不同的方式來做同一件事迹恐,那么就應(yīng)該用 34 重寫(overriding),而重載(overloading)是用不同的輸入做同一件事卧斟。在 Java 中殴边,重載的方法簽名不同,而重寫并不是珍语。?


10锤岸、IO 使用了什么設(shè)計模式

IO 使用了適配器模式和裝飾器模式板乙。

適配器模式:由于 InputStream 是字節(jié)流不能享受到字符流讀取字符那么便捷的功能是偷,借助 InputStreamReader 將其轉(zhuǎn)為 Reader 子類拳氢,因而可以擁有便捷操作文本文件方法;

裝飾器模式:將 InputStream 字節(jié)流包裝為其他流的過程就是裝飾器模式蛋铆,比如馋评,包裝為 FileInputStream、ByteArrayInputStream刺啦、PipedInputStream 等留特。


懂你所想、知你所需玛瘸,后臺回復(fù)「面試題庫」蜕青,做足功課為自己的面試交出滿意答卷吧。


更多內(nèi)容也請關(guān)注

程序員求職之路

一個為程序員量身定做的求職公眾號

給你貼心有效的大廠面試真題

面試干貨糊渊、職業(yè)發(fā)展干貨右核、簡歷模版

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市渺绒,隨后出現(xiàn)的幾起案子贺喝,更是在濱河造成了極大的恐慌,老刑警劉巖芒篷,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件搜变,死亡現(xiàn)場離奇詭異,居然都是意外死亡针炉,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進(jìn)店門扳抽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來篡帕,“玉大人,你說我怎么就攤上這事贸呢×眨” “怎么了?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵楞陷,是天一觀的道長怔鳖。 經(jīng)常有香客問我,道長固蛾,這世上最難降的妖魔是什么结执? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮艾凯,結(jié)果婚禮上献幔,老公的妹妹穿的比我還像新娘。我一直安慰自己趾诗,他們只是感情好蜡感,可當(dāng)我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般郑兴。 火紅的嫁衣襯著肌膚如雪犀斋。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天情连,我揣著相機與錄音叽粹,去河邊找鬼。 笑死蒙具,一個胖子當(dāng)著我的面吹牛球榆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播禁筏,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼持钉,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了篱昔?” 一聲冷哼從身側(cè)響起每强,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎州刽,沒想到半個月后空执,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡穗椅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年辨绊,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片匹表。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡门坷,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出袍镀,到底是詐尸還是另有隱情默蚌,我是刑警寧澤,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布苇羡,位于F島的核電站绸吸,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏设江。R本人自食惡果不足惜锦茁,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望绣硝。 院中可真熱鬧蜻势,春花似錦、人聲如沸鹉胖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至挠铲,卻和暖如春冕屯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背拂苹。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工安聘, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人瓢棒。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓浴韭,卻偏偏與公主長得像,于是被迫代替她去往敵國和親脯宿。 傳聞我的和親對象是個殘疾皇子念颈,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容