學(xué)習(xí)Android到現(xiàn)在也兩年了,感覺很多知識都不懂,也一直沒寫過博客分享東西,因為害怕知識點寫錯,怕讀者發(fā)現(xiàn)錯誤,然后就很尷尬,現(xiàn)在想想,不寫點東西給你們指出我的錯誤,我發(fā)現(xiàn)我懂的更少,所以我現(xiàn)在開始嘗試寫博客,或許寫的不好,大家多多指教小的,不管是語言描述還是知識點描述的問題,反正有指出就對了,我就可以認識到自己的不足,謝謝大家啦!??!
廢話一堆完畢后進入正題,我們今天來學(xué)習(xí)一下設(shè)計模式,因為我以前也沒用過設(shè)計模式,所以現(xiàn)在是邊學(xué)邊分享,也是設(shè)計模式的初學(xué)者,我可能寫理論的知識點很少,都是實際敲代碼展示,希望能最簡單明了的分享給大家,我不一定按照以下順序來分享,我只按照我學(xué)習(xí)的順序來分享。
設(shè)計模式一共有23種,其中又分為三大類:
創(chuàng)建型模式,共五種:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。
結(jié)構(gòu)型模式,共七種:適配器模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。
行為型模式,共十一種:策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態(tài)模式、訪問者模式、中介者模式、解釋器模式。
--------------------------------------------------我是觀察者模式------------------------------------------------------
觀察者模式建名知意就是偏向于觀察,所以我們習(xí)慣的命名就是觀察者都是以xxxObserver結(jié)尾,被觀察的目標xxxSubject結(jié)尾,大家要養(yǎng)成這種命名習(xí)慣,接下來代碼步驟走起,用搶小米手機為故事展開。
步驟一:定義Observer對象,注意:定義的是接口,里面有個方法,習(xí)慣命名為update

步驟二:定義實在 Observer對象,他收到消息后,然后該干嘛就干嘛

步驟三:定義目標Subject,它可以知道觀察它的目標,并提供添加、刪除、和通知更新方法

步驟四:定義具體目標對象,比如小米MIX2

步驟四:定義客戶端開始進行測試,注意步驟事項

步驟五:運行上面代碼控制臺打印出結(jié)果如下:

怎么樣,觀察者模式是不是很簡單呢?上面就是一套簡單的模板,但是簡單也是一個觀察者模式。觀察者有推模式和拉模式,我上面寫的是拉模式,給我感覺這兩種模式就是一個引用問題而已,推模式就是改變下面的引用為String而已(請忽略報錯,因為我沒改基類類型,這里只展示一下)

以為就這么簡單就可以了??這也太不靈活了吧,什么消息都推,人家高富帥不可能全部的小米手機都想收到消息,他就想收到高配的消息,屌絲也知道自己的情況,高端機是不可能的啦,就想收到低配價錢低的手機,所以我們要靈活處理這些需求。那我們接下來就拿上面模板來稍作修改。
修改地方一:觀察者里面加多角色設(shè)置、獲取方法

修改地方二:目標類的通知更新然子類去實現(xiàn)

修改地方三:具體的目標具體通知

修改地方四:測試端代碼:

運行以上代碼,控制臺實現(xiàn)打印:

以上就是我對觀察者模式的講解,我比較喜歡截圖代碼來展示,這樣你們也看的舒服,文字估計早就關(guān)閉頁面了,有什么不足點請大家多多指出,謝謝各位老鐵了。