做網(wǎng)站后端需要什么語言競(jìng)價(jià)托管多少錢
這里寫目錄標(biāo)題
- 先進(jìn)行專欄介紹
- 再插一句
- 開始嘍
- 事件監(jiān)聽機(jī)制
- 分析
- 觀察者模式
- 觀察者模式由以下幾個(gè)角色組成:
- 觀察者模式的工作流程如下:
- 觀察者模式的優(yōu)點(diǎn)包括:
- 觀察者模式適用于以下場(chǎng)景:
- 總結(jié)
- 事件監(jiān)聽機(jī)制的工作流程如下:
- Java代碼示例
先進(jìn)行專欄介紹
本專欄是自己學(xué)Java的旅途,純手敲的代碼,自己跟著黑馬課程學(xué)習(xí)的,并加入一些自己的理解,對(duì)代碼和筆記
進(jìn)行適當(dāng)修改。希望能對(duì)大家能有所幫助,同時(shí)也是請(qǐng)大家對(duì)我進(jìn)行監(jiān)督,對(duì)我寫的代碼進(jìn)行建議,互相學(xué)習(xí)。
再插一句
有一段時(shí)間斷更了,是在更新數(shù)據(jù)結(jié)構(gòu)與算法專欄,有興趣的可以去看一看,比較不錯(cuò)
開始嘍
事件監(jiān)聽機(jī)制
Java中的事件監(jiān)聽機(jī)制是一種用于處理用戶交互事件的機(jī)制。它允許開發(fā)人員在特定事件發(fā)生時(shí)執(zhí)行特定的代碼邏輯。
分析
在Java中,事件監(jiān)聽機(jī)制是基于 觀察者模式實(shí)現(xiàn)的。
觀察者模式
觀察者模式是一種行為型設(shè)計(jì)模式,它定義了對(duì)象之間的一對(duì)多依賴關(guān)系,使得當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生變化時(shí),
所有依賴它的對(duì)象都會(huì)得到通知并自動(dòng)更新。
觀察者模式由以下幾個(gè)角色組成:
1Subject(主題):主題是被觀察的對(duì)象,它維護(hù)了一個(gè)觀察者列表,并提供了用于添加、刪除和通知觀察者的方法。主題可以是一個(gè)接口或抽象類,具體的主題類實(shí)現(xiàn)了主題接口。
2、Observer(觀察者):觀察者是依賴于主題的對(duì)象,它定義了一個(gè)更新方法,當(dāng)主題狀態(tài)發(fā)生變化時(shí),觀察者會(huì)被通知并執(zhí)行相應(yīng)的更新操作。觀察者可以是一個(gè)接口或抽象類,具體的觀察者類實(shí)現(xiàn)了觀察者接口。
3、ConcreteSubject(具體主題):具體主題是主題的具體實(shí)現(xiàn)類,它維護(hù)了一個(gè)狀態(tài),并在狀態(tài)發(fā)生變化時(shí)通知觀察者。具體主題類通常包含了觀察者列表,并提供了添加、刪除和通知觀察者的方法。
4、ConcreteObserver(具體觀察者):具體觀察者是觀察者的具體實(shí)現(xiàn)類,它實(shí)現(xiàn)了觀察者接口中的更新方法。具體觀察者類在收到通知后,根據(jù)具體的業(yè)務(wù)需求執(zhí)行相應(yīng)的更新操作。
觀察者模式的工作流程如下:
1、主題對(duì)象維護(hù)觀察者列表,并提供了添加、刪除和通知觀察者的方法。
2、觀察者對(duì)象注冊(cè)到主題對(duì)象上,成為主題對(duì)象的觀察者。
3、當(dāng)主題對(duì)象的狀態(tài)發(fā)生變化時(shí),它會(huì)遍歷觀察者列表,并調(diào)用每個(gè)觀察者的更新方法。
4、每個(gè)觀察者收到通知后,根據(jù)具體的業(yè)務(wù)需求執(zhí)行相應(yīng)的更新操作。
觀察者模式的優(yōu)點(diǎn)包括:
1、解耦:主題對(duì)象和觀察者對(duì)象之間解耦,它們可以獨(dú)立變化,互不影響。
2、可擴(kuò)展性:可以動(dòng)態(tài)地添加、刪除觀察者對(duì)象,使得系統(tǒng)具有良好的擴(kuò)展性。
3、靈活性:觀察者模式可以實(shí)現(xiàn)一對(duì)多的依賴關(guān)系,一個(gè)主題對(duì)象可以通知多個(gè)觀察者對(duì)象。
觀察者模式適用于以下場(chǎng)景:
當(dāng)一個(gè)對(duì)象的改變需要同時(shí)改變其他對(duì)象的時(shí)候,可以使用觀察者模式。
當(dāng)一個(gè)抽象模型有兩個(gè)方面,其中一個(gè)方面依賴于另一個(gè)方面時(shí),可以使用觀察者模式。
當(dāng)一個(gè)對(duì)象必須通知其他對(duì)象,但又不希望與被通知的對(duì)象形成緊耦合關(guān)系時(shí),可以使用觀察者模式。
總結(jié)
觀察者模式通過定義一對(duì)多的依賴關(guān)系,實(shí)現(xiàn)了對(duì)象之間的解耦和松耦合。它提供了一種靈活的方式來處理對(duì)象之間的通信和狀態(tài)變化,使得系統(tǒng)具有更好的可擴(kuò)展性和可維護(hù)性。
事件監(jiān)聽機(jī)制的工作流程如下:
定義事件源:事件源是觸發(fā)事件的對(duì)象,它通常是一個(gè)類或接口。事件源需要提供注冊(cè)和注銷監(jiān)聽器的方法,并在適當(dāng)?shù)臅r(shí)候觸發(fā)事件。
定義事件監(jiān)聽器接口:事件監(jiān)聽器接口定義了事件發(fā)生時(shí)要執(zhí)行的方法。通常,事件監(jiān)聽器接口包含一個(gè)或多個(gè)事件處理方法。
實(shí)現(xiàn)事件監(jiān)聽器:根據(jù)定義的事件監(jiān)聽器接口,實(shí)現(xiàn)具體的事件監(jiān)聽器類。這些類負(fù)責(zé)處理事件發(fā)生時(shí)的邏輯操作。
注冊(cè)事件監(jiān)聽器:在事件源上調(diào)用注冊(cè)方法,將事件監(jiān)聽器對(duì)象注冊(cè)到事件源上。這樣,事件源就知道要通知哪些監(jiān)聽器。
觸發(fā)事件:當(dāng)事件源發(fā)生事件時(shí),它會(huì)遍歷已注冊(cè)的監(jiān)聽器列表,并調(diào)用每個(gè)監(jiān)聽器的事件處理方法。這樣,每個(gè)監(jiān)聽器都可以根據(jù)具體的業(yè)務(wù)需求執(zhí)行相應(yīng)的操作。
響應(yīng)事件:每個(gè)監(jiān)聽器收到事件通知后,根據(jù)具體的業(yè)務(wù)需求執(zhí)行相應(yīng)的操作。這些操作可以包括更新界面、處理數(shù)據(jù)、發(fā)送通知等。
Java代碼示例
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;public class crj {public static void main(String[] args) {JFrame jf=new JFrame();jf.setTitle("事件監(jiān)聽機(jī)制");jf.setSize(400,300);jf.setDefaultCloseOperation(3);jf.setLocationRelativeTo(null);jf.setAlwaysOnTop(true);jf.setLayout(null);//確定按鈕JButton jButton=new JButton("你點(diǎn)我啊");jButton.setBounds(0,0,100,100);jf.add(jButton);jButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.out.println("你點(diǎn)我啊");}});jf.setVisible(true);}
}