日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

我理解的--java观察者模式

發(fā)布時間:2025/7/14 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 我理解的--java观察者模式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>

這個模式比較常用特別是在ui界面設(shè)計(jì)的過程中,android的監(jiān)聽器就是觀察者模式。從表面上看一個物體發(fā)生變化,會引起另一個物體的反應(yīng)。首先是兩個類,當(dāng)一個類發(fā)消息的時候,另一個類會發(fā)生變化。其實(shí)是發(fā)生變化的類調(diào)用了另一個類的函數(shù),執(zhí)行的是另一個類的函數(shù)。從層次上說,應(yīng)該是一個類中包含了另一個類的引用,發(fā)消息的類是代理了另一個類的功能。從語言的層次上,只是簡單的類的組合。

想抽象出來兩個類按鈕和監(jiān)聽按鈕的事件:

Button:能發(fā)出變化,變化的效果是調(diào)用的另一個類。

interface?Button?{void?add(Lister?lister);void?notif();}

Lister:真實(shí)處理變化的功能類

public?interface?Lister?{void?update(String?name); }

一個具體的按鈕:

class?Radio?implements?Button{Lister?lister;String?name;Radio(String?name){this.name?=?name;}@Overridepublic?void?add(Lister?lister)?{this.lister?=?lister;}@Overridepublic?void?notif()?{lister.update(name);}}

單選按鈕點(diǎn)擊后把名字打印出來:

public?class?ButtonLister?implements?Lister{@Overridepublic?void?update(String?name)?{System.out.println(name+?"按下去了");}}


測試:

class?Test?{public?static?void?main(String[]?args)?{ButtonLister?lister?=?new?ButtonLister();Radio?radio?=?new?Radio("按鈕1");radio.add(lister);radio.notif();}}

結(jié)果:

按鈕1按下去了


這個模式學(xué)了以后會很容易的理解ui界面的邏輯,他是在一個構(gòu)件上注冊一個監(jiān)聽器,監(jiān)聽器會根據(jù)不同的動作作出不同的反應(yīng),雙擊、單擊等不同的操作。


轉(zhuǎn)載于:https://my.oschina.net/liuxinquan/blog/651887

總結(jié)

以上是生活随笔為你收集整理的我理解的--java观察者模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。