第1章內(nèi)容介紹和授課方式
內(nèi)容來(lái)自尚硅谷Java設(shè)計(jì)模式(圖解+框架源碼剖析)_嗶哩嗶哩_bilibili
寫在前面:本文內(nèi)容大致和原視頻內(nèi)老師的筆記內(nèi)容相同,會(huì)偶爾插入自己的注釋和理解,盡量會(huì)完成作業(yè)
兄弟們學(xué)就完事了
第1章內(nèi)容介紹和授課方式
1.1Java設(shè)計(jì)模式內(nèi)容介紹
1.1.1看幾個(gè)經(jīng)典的面試題
?? 原型設(shè)計(jì)模式問(wèn)題:
1)????? 請(qǐng)使用UML類圖畫出原型模式核心角色
2)????? 原型設(shè)計(jì)模式的深拷貝和淺拷貝是什么,并寫出深拷貝的兩種方式的源碼(重寫clone方法實(shí)現(xiàn)深拷貝、使用序列化來(lái)實(shí)現(xiàn)深拷貝)
3)????? 在Spring框架中哪里使用到原型模式,并對(duì)源碼進(jìn)行分析
beans.xml
<bean id="id01" class="com.atguigu.spring.bean.Monster" scope="prototype"/>
4)????? Spring中原型bean的創(chuàng)建,就是原型模式的應(yīng)用
5)????? 代碼分析+Debug源碼

?? 設(shè)計(jì)模式的七大原則:
要求:
1)七大設(shè)計(jì)原則核心思想
2)能夠以類圖的說(shuō)明設(shè)計(jì)原則
3)在項(xiàng)目實(shí)際開發(fā)中,你在哪里使用到了ocp 原則(答:工廠模式)


?? 解釋器設(shè)計(jì)模式
1)????? 介紹解釋器設(shè)計(jì)模式是什么?
2)????? 畫出解釋器設(shè)計(jì)模式的UML類圖,分析設(shè)計(jì)模式中的各個(gè)角色是什么?
3)????? 請(qǐng)說(shuō)明Spring的框架中,哪里使用到了解釋器設(shè)計(jì)模式,并做源碼級(jí)別的分析
4)????? Spring框架中SpelExpressionParscr就使用到解釋器模式
5)????? 代碼分析+Debug源碼+模式角色分析說(shuō)明

?? 單例設(shè)計(jì)模式一共有幾種實(shí)現(xiàn)方式?請(qǐng)分別用代碼實(shí)現(xiàn),并說(shuō)明各個(gè)實(shí)現(xiàn)方式的優(yōu)點(diǎn)和缺點(diǎn)?
單例設(shè)計(jì)模式一共有8種寫法,后面我們會(huì)依次講到
餓漢式 兩種
懶漢式 三種
雙重檢查
靜態(tài)內(nèi)部類
枚舉
1.1.2設(shè)計(jì)模式的重要性
1)??????軟件工程中,設(shè)計(jì)模式(design pattern)是對(duì)軟件設(shè)計(jì)中普遍存在(反復(fù)出現(xiàn))的各種問(wèn)題,所提出的解決方案。這個(gè)術(shù)語(yǔ)是由埃里?!べが敚‥rich Gamma)等人在1990年代從建筑設(shè)計(jì)領(lǐng)域引入到計(jì)算機(jī)科學(xué)的
2)????? 大廈VS 簡(jiǎn)易房
3)????? 拿實(shí)際工作經(jīng)歷來(lái)說(shuō),當(dāng)一個(gè)項(xiàng)目開發(fā)完后,如果客戶提出增新功能,怎么辦?(可擴(kuò)展性,使用設(shè)計(jì)模式,軟件將會(huì)具有很好的可擴(kuò)展性)
4)????? 如果項(xiàng)目開發(fā)完后,原來(lái)程序員離職,你接手維護(hù)該項(xiàng)目怎么辦?(維護(hù)性[可讀性、規(guī)范性])
5)????? 目前程序員門檻越來(lái)越高,一線IT公司(大廠),都會(huì)問(wèn)你在實(shí)際項(xiàng)目中使用過(guò)什么設(shè)計(jì)模式,怎樣使用的,解決了什么問(wèn)題。
6)????? 設(shè)計(jì)模式在軟件中哪里﹖面向?qū)ο?oo)=>功能模塊[設(shè)計(jì)模式+算法(數(shù)據(jù)結(jié)構(gòu))]=>框架[使用到多種設(shè)計(jì)模式]=>架構(gòu)[服務(wù)器集群]
7)????? 如果想成為合格軟件工程師,那就花時(shí)間來(lái)研究下設(shè)計(jì)模式是非常必要的.