自寫乙個EventBus

2021-10-19 22:56:25 字數 2099 閱讀 2754

首發於enaium的個人部落格

eventbus,什麼是eventbus。

eventbus是事件發布-訂閱匯流排,簡單來說監聽乙個事件,乙個方法訂閱這個事件,如果事件呼叫,那麼訂閱了這個事件的方法也會跟著呼叫,這就是eventbus。

建立乙個註解,用於訂閱事件,名字可以隨便起,當然也可以叫subscribe,我這裡叫event。

@target

(elementtype.method)

@retention

(retentionpolicy.runtime)

public @inte***ce

event

建立listener***。

public

class

listener

建立methodbean類,來儲存訂閱方法,object是訂閱類的物件,method就是被訂閱的方法。

public

class

methodbean

public object getobject()

public method getmethod()

}

建立乙個eventmanager,來管理訂閱的事件。

public

class

eventmanager

建立乙個hashmap合集k是***,v是被呼叫的方法,因為乙個***可能有多個方法,並且要保證執行緒安全,需要使用copyonwritearraylist。

public

class

eventmanager

建立register和unregister方法來註冊和取消註冊訂閱的物件。

public

class

eventmanager

public

void

unregister

(object o)

}

註冊。

public

void

register

(object o)

}else}}

}

取消註冊很簡單,只要將events的k和v移除就行。

public

void

unregister

(object o)

建立乙個getevent方法來獲取乙個***的所有訂閱。

public copyonwritearraylist

getevent

(class<

?extends

listener

> type)

建立乙個單例。

public

enum main

回到剛才建立的listener類。

建立乙個call方法來進行事件觸發操作,當事件觸發,獲取***的所有訂閱方法來呼叫,引數就是當前的***。

public

class

listener

methodbeans.

foreach

(event -

>

catch

(illegalacces***ception

| invocationtargetexception e)})

;}}

建立乙個***。

public

class

updateevent

extends

listener

乙個簡單的eventbus已經寫好了,現在來測試一下。

public

enum main

static

class

test

}}

原始碼

python寫乙個服務 Python寫乙個服務

coding utf 8 import json from urllib.parse import parse qs from wsgiref.server import make server 定義函式,引數是函式的兩個引數,都是python本身定義的,預設就行了。定義檔案請求的型別和當前請求成功...

寫乙個東東

最近打了幾天的三國無雙6,感覺不錯!很久很久以前,乙個小學同學帶了我到機室玩三國無雙。自此,我便喜歡上了這個遊戲。現在我玩的遊戲內有兩個 三國無雙和cs。ps 曾經有些怪我的這個好朋友帶我打遊戲,但現在想來,若不是他,我的童年又怎麼會有歡樂呢。人活著,快樂是最重要的.因為以前是用專用手柄打的,感覺非...

寫乙個網頁

1 建立站點資料夾,站點資料夾的名字可以是中文 2 在站點資料夾下面建立子資料夾和子檔案 css js images html,前三個都是資料夾形式 子資料夾和子檔案的名字不能是中文 2.重置所有預設的樣式和設定一些全域性樣式,並將設定樣式的css檔案和對應的頁面關聯起來 3.劃分區域 如果的寬度大...