教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢/投訴熱線:400-618-4000

Java常用的設(shè)計(jì)模式有哪些?【Java面試題】

更新時(shí)間:2021年03月17日16時(shí)32分 來(lái)源:傳智教育 瀏覽次數(shù):

設(shè)計(jì)模式是唄編程者總結(jié)出來(lái)的一套被反復(fù)使用的、多數(shù)人知曉的、經(jīng)過(guò)分類編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)。掌握幾種常用的設(shè)計(jì)模式,對(duì)于Java應(yīng)聘者來(lái)說(shuō)十分重要,比如單例模式、工廠模式、建造者模式等等,接下來(lái)就來(lái)簡(jiǎn)單介紹一下這幾種常見(jiàn)的設(shè)計(jì)模式和它們的應(yīng)用場(chǎng)景。


(1)考察目標(biāo)

考官主要是對(duì)一些常用設(shè)計(jì)模式和代碼抽取優(yōu)化能力的考核,問(wèn)題可能涉及6大設(shè)計(jì)原則及23種設(shè)計(jì)模式。

(2)題目分析

比較熟悉的有:

單例模式:

保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)全局訪問(wèn)點(diǎn),比如一些配置文件或者管理類可以設(shè)計(jì)為單例,我們常用的線程池也是單例的。

模板方法:

在定義好的算法骨架下,允許子類為一個(gè)或多個(gè)步驟提供實(shí)現(xiàn),一次性實(shí)現(xiàn)算法的不變部分,將可變部分留給子類實(shí)現(xiàn),當(dāng)子類實(shí)現(xiàn)代碼邏輯雷同時(shí),可以使用此設(shè)計(jì)模式。

工廠模式:創(chuàng)建對(duì)象需要大量的重復(fù)代碼時(shí),通過(guò)子類實(shí)現(xiàn)方法來(lái)創(chuàng)建對(duì)象。如Spring中通過(guò)工廠模式將創(chuàng)建對(duì)象的任務(wù)交給容器管理。

建造者模式:

講復(fù)雜對(duì)象的構(gòu)建和表示分離,適用于流程固定,但是順序不一定固定的場(chǎng)景。如需要給一個(gè)對(duì)象多次給不同的屬性賦值,可以使用鏈?zhǔn)秸{(diào)用傳參,最后生成對(duì)象。

另外,如策略模式,觀察者模式,模板方法模式,foreach中的迭代器模式,spring 中ASM的訪問(wèn)者模式,動(dòng)態(tài)代理等都有一些了解。

(3)應(yīng)用場(chǎng)景

JavaEE應(yīng)用中,Spring用于創(chuàng)建IOC容器的監(jiān)聽(tīng)器就是基于觀察者模式的。

Spring中獲取FileSystemResource和ClassPathResource等功能雷同的類時(shí)使用模板方法。

單例模式:包含懶漢餓漢式以及不同的變種,工廠類設(shè)計(jì)模式一般也設(shè)計(jì)為單例。項(xiàng)目中的一些配置,或者引入外部的sdk需要?jiǎng)?chuàng)建管理類,或者封裝自己的框架時(shí),需要用到單例

工廠方法:在編碼時(shí)不能預(yù)見(jiàn)需要?jiǎng)?chuàng)建哪種類的實(shí)例。


(4)總結(jié)

本題主要考察的是:

1)常用設(shè)計(jì)模式

2)代碼抽取優(yōu)化能力


猜你喜歡:

Java設(shè)計(jì)模式之單例模式以及單例所引發(fā)的思考

設(shè)計(jì)模式-責(zé)任鏈

傳智教育java培訓(xùn)

0 分享到:
和我們?cè)诰€交談!