国产chinesehdxxxx野外,国产av无码专区亚洲av琪琪,播放男人添女人下边视频,成人国产精品一区二区免费看,chinese丰满人妻videos

第八節(jié) Hasor 事件

2018-09-28 20:16 更新

雖然 Hasor 提供的 Module 可以幫助您模塊化項(xiàng)目開發(fā)。但是在代碼層面往往多個(gè)系統(tǒng)之間還會(huì)有直接或者間接的調(diào)用,耦合度還是很高。這個(gè)時(shí)候您可以適當(dāng)?shù)氖褂?Hasor 的事件機(jī)制來進(jìn)行深度解耦。使用事件可以為程序的模塊劃清界限,明確了通知者和接受者之間的關(guān)系。同時(shí)使用事件還可以增加程序的可維護(hù)性和重用性。


Hasor 事件的執(zhí)行分為三種:同步(獨(dú)享線程)、同步(共享線程)、異步,它們的執(zhí)行模型如下:

Hasor 事件


無論是同步的事件模型,還是異步事件模型。在 Hasor 事件體系中,它們都有以下共同性質(zhì):

  • 1.按注冊(cè)順序執(zhí)行事件監(jiān)聽器
  • 2.事件監(jiān)聽器接口相同
  • 3.事件注冊(cè)方式相同


后面會(huì)有專門的文章分別介紹 Hasor 的各類事件機(jī)制差異點(diǎn)。在開始這些內(nèi)容之前,現(xiàn)在先讓我們來看一看如何注冊(cè)事件監(jiān)聽器。首先我們先實(shí)現(xiàn)一個(gè)事件監(jiān)聽器:

import net.hasor.core.EventListener;
public class MyListener implements EventListener<Object> {
    public void onEvent(String event, Object eventData) throws InterruptedException {
        Thread.sleep(500);
        System.out.println("Receive Message:" + JSON.toJSONString(eventData));
    }
}


在 Hasor 中事件的注冊(cè)和發(fā)送都是通過 EventContext 發(fā)送出去的。因此您需要首先拿到這個(gè)接口對(duì)象,才能將事件監(jiān)聽器注冊(cè)上。下面是不同的情況下如何取得 EventContext 接口的例子:

ApiBinder apiBinder = ...
EventContext ec = apiBinder.getEnvironment().getEventContext();
AppContext appContext = ...;
EventContext eventContext = appContext.getInstance(EventContext.class);
or
EventContext eventContext = appContext.getEnvironment().getEventContext();
public class MyBean{
    @Inject
    private EventContext eventContext;
}


接著我們通過 EventContext 將事件注冊(cè)到容器中。

EventContext eventContext = ...
eventContext.addListener("EventName",new MyListener());


在注冊(cè)完畢之后我們可以引發(fā)事件:

eventContext.fireSyncEvent("EventName",...);


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)