這期內(nèi)容當中小編將會給大家?guī)碛嘘P(guān)如何理解Java知識點中的常見設(shè)計模式,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供寶坻網(wǎng)站建設(shè)、寶坻做網(wǎng)站、寶坻網(wǎng)站設(shè)計、寶坻網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、寶坻企業(yè)網(wǎng)站模板建站服務(wù),10年寶坻做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。一. 觀察者模式
觀察者模式用一句話描述就是當一個類的對象(被觀察者)的狀態(tài)發(fā)生改變時同時其他依賴于它的對象(觀察者)的狀態(tài)也做相應(yīng)的改變(做相應(yīng)的動作)。
具體實現(xiàn)流程:
定義觀察者抽象類,該抽象類中有一個被觀察者的成員變量,還有一個update方法用于在被觀察者發(fā)生改變時通知觀察者類,實例化觀察者類時將被觀察者實例傳遞進來,這樣當被觀察者調(diào)用觀察者的update方法后觀察者就可以通過自己的被觀察者成員變量訪問到被觀察者改變之后的狀態(tài)
定義被觀察者,其含有一個list,用來存儲若干個觀察者的實例,暴露出增加、刪除編輯觀察者的方法,當其狀態(tài)發(fā)生改變時遍歷調(diào)用list中觀察者對象的update方法通知觀察者們
java在java.util庫里面,提供了一個Observable類和一個Observer接口,在Observer接口中只提供了一個update方法,被觀察者通過調(diào)用該方法通知觀察者自己的狀態(tài)發(fā)生了改變。Observable類我們提供了對于觀察者添加,刪除,通知觀察者改變等方法。當我們的需要通知觀察者并且需要調(diào)用觀察者update方法,我們需要調(diào)用setChanged方法。
在Android中對于觀察者模式使用的場景有很多。例如BroadcastReceiver,Eventbus,RxJava等等都采用了觀察者模式。
作為兩個不兼容的接口之間的橋梁,它結(jié)合了兩個獨立接口的功能。 這種模式涉及到一個單一的類,該類負責(zé)加入獨立的或不兼容的接口功能。 注意,要點是要在原來類的基礎(chǔ)上使原本不兼容的功能變得兼容。 Adapter類一般是用來實現(xiàn)與原有類不兼容的功能,比如demo中的MediaAdapter實現(xiàn)了MediaPlayer沒有的特殊功能,用戶只要調(diào)用AudioPlayer中的play方法,AudioPlayer會自動根據(jù)音頻的類型選擇不同的play方式,當音頻類型不符合傳統(tǒng)player的能力時AudioPlayer會使用adapter去調(diào)用之前不兼容的方法(功能),這樣就實現(xiàn)了所謂的適配。
具先實現(xiàn)其實也很簡單,就是一個代理類將別代理類包裹起來,只對外界暴露調(diào)用被代理類方法的方法,從而實現(xiàn)代理模式,需要特別注意的是代理模式和適配器模式的區(qū)別: 適配器模式主要改變所考慮對象的接口,而代理模式不能改變所代理類的接口 ,和裝飾器模式的區(qū)別: 裝飾器模式為了增強功能,而代理模式是為了加以控制 。
工廠方法模式其實就是當一個類的實例化依賴于不同場景時需要使用的,比如上面demo,根據(jù)不同的形狀,實例化的Shape對象內(nèi)部的實現(xiàn)邏輯不一樣,這時候就可以使用工廠方法模式,將類內(nèi)部的實現(xiàn)細節(jié)隱藏起來,用戶只需要告訴工廠類自己需要什么情況下的產(chǎn)品,工廠就可以自動調(diào)用自己內(nèi)部對應(yīng)場景的代碼從而返回一個用戶需要的“產(chǎn)品”。
對比工廠方法模式,因為一個工廠只能生產(chǎn)一個產(chǎn)品,比如一個ShapeFactory只能根據(jù)不同情況實例化不同的Shape,那么當我們需要一整套的產(chǎn)品(比如形狀和顏色形成了一套產(chǎn)品)時使用工廠方法顯然就不能解決了,所以就需要抽象工廠模式,抽象工廠模式實際上是工廠的工廠,即其作用的目的是為了實例化不同的工廠,用戶再通過不同的工廠實例化不同場景下成套的產(chǎn)品。
單例模式通俗來講就是讓一個類在整個程序中只有一個對象。
命令模式實質(zhì)上就是將命令抽象到一個具體的類中,即這個類是專門去執(zhí)行某個命令的,比如demo中,SellStock就是專門執(zhí)行sell這個命令的,當用戶需要sell的時候只要實例化SellStock然后excute就可以完成sell,還有一個比較常用的例子是GUI開發(fā)中按鈕(button)的作用,每一個按鈕都是一個對象,當用戶點擊某個按鈕后就會觸發(fā)一個相應(yīng)的命令,用戶看到的是點擊按鈕產(chǎn)生效果,而代碼層面上是實例化的按鈕對象執(zhí)行類似于demo中的excute方法完成自己的“命令”。
上述就是小編為大家分享的如何理解Java知識點中的常見設(shè)計模式了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道。
網(wǎng)頁題目:如何理解Java知識點中的常見設(shè)計模式-創(chuàng)新互聯(lián)
分享地址:http://jinyejixie.com/article40/dedjho.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊、App開發(fā)、電子商務(wù)、靜態(tài)網(wǎng)站、網(wǎng)站設(shè)計、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容