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