如何理解Java知識(shí)點(diǎn)中的常見(jiàn)設(shè)計(jì)模式

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)如何理解Java知識(shí)點(diǎn)中的常見(jiàn)設(shè)計(jì)模式,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

創(chuàng)新互聯(lián)專注于西峰企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站建設(shè),購(gòu)物商城網(wǎng)站建設(shè)。西峰網(wǎng)站建設(shè)公司,為西峰等地區(qū)提供建站服務(wù)。全流程按需策劃設(shè)計(jì),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)

一. 觀察者模式

觀察者模式用一句話描述就是當(dāng)一個(gè)類的對(duì)象(被觀察者)的狀態(tài)發(fā)生改變時(shí)同時(shí)其他依賴于它的對(duì)象(觀察者)的狀態(tài)也做相應(yīng)的改變(做相應(yīng)的動(dòng)作)。

具體實(shí)現(xiàn)流程:

  • 定義觀察者抽象類,該抽象類中有一個(gè)被觀察者的成員變量,還有一個(gè)update方法用于在被觀察者發(fā)生改變時(shí)通知觀察者類,實(shí)例化觀察者類時(shí)將被觀察者實(shí)例傳遞進(jìn)來(lái),這樣當(dāng)被觀察者調(diào)用觀察者的update方法后觀察者就可以通過(guò)自己的被觀察者成員變量訪問(wèn)到被觀察者改變之后的狀態(tài)

  • 定義被觀察者,其含有一個(gè)list,用來(lái)存儲(chǔ)若干個(gè)觀察者的實(shí)例,暴露出增加、刪除編輯觀察者的方法,當(dāng)其狀態(tài)發(fā)生改變時(shí)遍歷調(diào)用list中觀察者對(duì)象的update方法通知觀察者們

java在java.util庫(kù)里面,提供了一個(gè)Observable類和一個(gè)Observer接口,在Observer接口中只提供了一個(gè)update方法,被觀察者通過(guò)調(diào)用該方法通知觀察者自己的狀態(tài)發(fā)生了改變。Observable類我們提供了對(duì)于觀察者添加,刪除,通知觀察者改變等方法。當(dāng)我們的需要通知觀察者并且需要調(diào)用觀察者update方法,我們需要調(diào)用setChanged方法。

在Android中對(duì)于觀察者模式使用的場(chǎng)景有很多。例如BroadcastReceiver,Eventbus,RxJava等等都采用了觀察者模式。

二. 適配器模式

作為兩個(gè)不兼容的接口之間的橋梁,它結(jié)合了兩個(gè)獨(dú)立接口的功能。 這種模式涉及到一個(gè)單一的類,該類負(fù)責(zé)加入獨(dú)立的或不兼容的接口功能。 注意,要點(diǎn)是要在原來(lái)類的基礎(chǔ)上使原本不兼容的功能變得兼容。 Adapter類一般是用來(lái)實(shí)現(xiàn)與原有類不兼容的功能,比如demo中的MediaAdapter實(shí)現(xiàn)了MediaPlayer沒(méi)有的特殊功能,用戶只要調(diào)用AudioPlayer中的play方法,AudioPlayer會(huì)自動(dòng)根據(jù)音頻的類型選擇不同的play方式,當(dāng)音頻類型不符合傳統(tǒng)player的能力時(shí)AudioPlayer會(huì)使用adapter去調(diào)用之前不兼容的方法(功能),這樣就實(shí)現(xiàn)了所謂的適配。

三. 代理模式

具先實(shí)現(xiàn)其實(shí)也很簡(jiǎn)單,就是一個(gè)代理類將別代理類包裹起來(lái),只對(duì)外界暴露調(diào)用被代理類方法的方法,從而實(shí)現(xiàn)代理模式,需要特別注意的是代理模式和適配器模式的區(qū)別: 適配器模式主要改變所考慮對(duì)象的接口,而代理模式不能改變所代理類的接口 ,和裝飾器模式的區(qū)別: 裝飾器模式為了增強(qiáng)功能,而代理模式是為了加以控制 。

四. 工廠方法模式

工廠方法模式其實(shí)就是當(dāng)一個(gè)類的實(shí)例化依賴于不同場(chǎng)景時(shí)需要使用的,比如上面demo,根據(jù)不同的形狀,實(shí)例化的Shape對(duì)象內(nèi)部的實(shí)現(xiàn)邏輯不一樣,這時(shí)候就可以使用工廠方法模式,將類內(nèi)部的實(shí)現(xiàn)細(xì)節(jié)隱藏起來(lái),用戶只需要告訴工廠類自己需要什么情況下的產(chǎn)品,工廠就可以自動(dòng)調(diào)用自己內(nèi)部對(duì)應(yīng)場(chǎng)景的代碼從而返回一個(gè)用戶需要的“產(chǎn)品”。

五. 抽象工廠模式

對(duì)比工廠方法模式,因?yàn)橐粋€(gè)工廠只能生產(chǎn)一個(gè)產(chǎn)品,比如一個(gè)ShapeFactory只能根據(jù)不同情況實(shí)例化不同的Shape,那么當(dāng)我們需要一整套的產(chǎn)品(比如形狀和顏色形成了一套產(chǎn)品)時(shí)使用工廠方法顯然就不能解決了,所以就需要抽象工廠模式,抽象工廠模式實(shí)際上是工廠的工廠,即其作用的目的是為了實(shí)例化不同的工廠,用戶再通過(guò)不同的工廠實(shí)例化不同場(chǎng)景下成套的產(chǎn)品。

六. 單例模式

單例模式通俗來(lái)講就是讓一個(gè)類在整個(gè)程序中只有一個(gè)對(duì)象。

七. 命令模式

命令模式實(shí)質(zhì)上就是將命令抽象到一個(gè)具體的類中,即這個(gè)類是專門(mén)去執(zhí)行某個(gè)命令的,比如demo中,SellStock就是專門(mén)執(zhí)行sell這個(gè)命令的,當(dāng)用戶需要sell的時(shí)候只要實(shí)例化SellStock然后excute就可以完成sell,還有一個(gè)比較常用的例子是GUI開(kāi)發(fā)中按鈕(button)的作用,每一個(gè)按鈕都是一個(gè)對(duì)象,當(dāng)用戶點(diǎn)擊某個(gè)按鈕后就會(huì)觸發(fā)一個(gè)相應(yīng)的命令,用戶看到的是點(diǎn)擊按鈕產(chǎn)生效果,而代碼層面上是實(shí)例化的按鈕對(duì)象執(zhí)行類似于demo中的excute方法完成自己的“命令”。

上述就是小編為大家分享的如何理解Java知識(shí)點(diǎn)中的常見(jiàn)設(shè)計(jì)模式了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)站題目:如何理解Java知識(shí)點(diǎn)中的常見(jiàn)設(shè)計(jì)模式
瀏覽地址:http://muchs.cn/article28/gesejp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、服務(wù)器托管、網(wǎng)站營(yíng)銷、GoogleApp開(kāi)發(fā)、做網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

綿陽(yáng)服務(wù)器托管