Java常用设计模式及应用场景介绍
Java常用設(shè)計(jì)模式有哪些?設(shè)計(jì)模式是設(shè)計(jì)代碼結(jié)構(gòu),方便開(kāi)發(fā)或后期調(diào)整,學(xué)習(xí)Java必須要掌握一些常用設(shè)計(jì)模式,如單例模式、模板方法、工廠(chǎng)模式、建造者模式、適配器模式等。主要培養(yǎng)常用設(shè)計(jì)模式和代碼抽取優(yōu)化能力,可能涉及6大設(shè)計(jì)原則及23種設(shè)計(jì)模式,今天簡(jiǎn)單介紹集中。
設(shè)計(jì)模式是被編程者總結(jié)出來(lái)的一套被反復(fù)使用的、多數(shù)人知曉的、經(jīng)過(guò)分類(lèi)編目的代碼設(shè)計(jì)經(jīng)驗(yàn)。掌握常用的設(shè)計(jì)模式對(duì)于Java應(yīng)聘者來(lái)說(shuō)十分重要,如單例模式、工廠(chǎng)模式、建造者模式等。接下來(lái)具體料及一下Java常用設(shè)計(jì)模式及應(yīng)用場(chǎng)景:
1、單例模式:保證一個(gè)類(lèi)僅有一個(gè)實(shí)例并提供一個(gè)全局訪(fǎng)問(wèn)點(diǎn),如一些配置文件或者管理類(lèi)可以設(shè)計(jì)為單例,常用的線(xiàn)程池也是單例。
2、模板方法:在定義好的算法骨架下允許子類(lèi)為一個(gè)或多個(gè)步驟提供實(shí)現(xiàn),一次性實(shí)現(xiàn)算法的不變部分將可變部分留給子類(lèi)實(shí)現(xiàn),當(dāng)子類(lèi)實(shí)現(xiàn)代碼邏輯雷同時(shí)可以使用此設(shè)計(jì)模式。
3、工廠(chǎng)模式:創(chuàng)建對(duì)象需要大量的重復(fù)代碼時(shí),通過(guò)子類(lèi)實(shí)現(xiàn)方法來(lái)創(chuàng)建對(duì)象。如Spring中通過(guò)工廠(chǎng)模式將創(chuàng)建對(duì)象的任務(wù)交給容器管理。
4、原型模式 :在應(yīng)用程序可能有某些對(duì)象的結(jié)構(gòu)比較復(fù)雜,但又需要頻繁的使用它們,如這個(gè)時(shí)候不斷的新建這個(gè)對(duì)象勢(shì)必會(huì)大大損耗系統(tǒng)內(nèi)存的,這個(gè)時(shí)候需要使用原型模式來(lái)對(duì)這個(gè)結(jié)構(gòu)復(fù)雜又要頻繁使用的對(duì)象進(jìn)行克隆。所以原型模式就是用原型實(shí)例指定創(chuàng)建對(duì)象的種類(lèi),且通過(guò)復(fù)制這些原型創(chuàng)建新的對(duì)象。主要應(yīng)用與那些創(chuàng)建新對(duì)象的成本過(guò)大時(shí)。它的主要優(yōu)點(diǎn)就是簡(jiǎn)化了新對(duì)象的創(chuàng)建過(guò)程,提高了效率,同時(shí)原型模式提供了簡(jiǎn)化的創(chuàng)建結(jié)構(gòu)。
5、建造者模式:講復(fù)雜對(duì)象的構(gòu)建和表示分離,適用于流程固定,但是順序不一定固定的場(chǎng)景。如需要給一個(gè)對(duì)象多次給不同的屬性賦值,可以使用鏈?zhǔn)秸{(diào)用傳參,最后生成對(duì)象。如策略模式,觀察者模式,模板方法模式,foreach中的迭代器模式,spring 中ASM的訪(fǎng)問(wèn)者模式,動(dòng)態(tài)代理等都有一些了解。
6、適配器模式:在應(yīng)用程序中可能需要將兩個(gè)不同接口的類(lèi)來(lái)進(jìn)行通信,在不修改這兩個(gè)的前提下可能會(huì)需要某個(gè)中間件來(lái)完成這個(gè)銜接的過(guò)程。這個(gè)中間件就是適配器。所謂適配器模式就是將一個(gè)類(lèi)的接口,轉(zhuǎn)換成客戶(hù)期望的另一個(gè)接口。它可以讓原本兩個(gè)不兼容的接口能夠無(wú)縫完成對(duì)接。作為中間件的適配器將目標(biāo)類(lèi)和適配者解耦,增加了類(lèi)的透明性和可復(fù)用性。
7、橋接模式 :如果說(shuō)某個(gè)系統(tǒng)能夠從多個(gè)角度來(lái)進(jìn)行分類(lèi),且每一種分類(lèi)都可能會(huì)變化,那么我們需要做的就是講這多個(gè)角度分離出來(lái),使得他們能獨(dú)立變化,減少他們之間的耦合,這個(gè)分離過(guò)程就使用了橋接模式。所謂橋接模式就是講抽象部分和實(shí)現(xiàn)部分隔離開(kāi)來(lái),使得他們能夠獨(dú)立變化。橋接模式將繼承關(guān)系轉(zhuǎn)化成關(guān)聯(lián)關(guān)系,封裝了變化,完成了解耦,減少了系統(tǒng)中類(lèi)的數(shù)量,也減少了代碼量。
設(shè)計(jì)模式應(yīng)用場(chǎng)景是什么?JavaEE應(yīng)用中Spring用于創(chuàng)建IOC容器的監(jiān)聽(tīng)器就是基于觀察者模式的。Spring中獲取FileSystemResource和ClassPathResource等功能雷同的類(lèi)時(shí)使用模板方法。
單例模式包含懶漢餓漢式以及不同的變種,工廠(chǎng)類(lèi)設(shè)計(jì)模式一般也設(shè)計(jì)為單例。項(xiàng)目中的一些配置或引入外部的sdk需要?jiǎng)?chuàng)建管理類(lèi),或封裝自己的框架時(shí)需要用到單例;工廠(chǎng)方法在編碼時(shí)不能預(yù)見(jiàn)需要?jiǎng)?chuàng)建哪種類(lèi)的實(shí)例。
設(shè)計(jì)模式是一套被反復(fù)使用、多數(shù)人知曉、經(jīng)過(guò)分類(lèi)編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。使用設(shè)計(jì)模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。設(shè)計(jì)模式于己于他人于系統(tǒng)都是多贏,設(shè)計(jì)模式使代碼編制真正工程化,設(shè)計(jì)模式是軟件工程的基石。
總結(jié)
以上是生活随笔為你收集整理的Java常用设计模式及应用场景介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: eclipse 工程中使用引入maven
- 下一篇: 散列表查找失败平均查找长度_Python