一種事件處理的方法和裝置的制造方法
【專利說明】
【技術領域】
[0001]本發明涉及計算機應用技術領域,特別涉及一種事件處理的方法和裝置。
【【背景技術】】
[0002]觀察者模式是軟件設計模式的一種,在此種模式中,一個被觀察者管理所有相依于它的觀察者,并且在被觀察者狀態發生改變時主動向觀察者發出通知,這通常通過調用各觀察者提供的方法來實現。這種模式廣泛地應用于事件處理系統,在事件處理系統中,例如用戶界面可以作為一個觀察者,業務數據是被觀察者,當用戶數據發生變化后,將事件發送給觀察者,觀察者響應該事件將數據變化顯示在用戶界面。
[0003]當前主流的觀察者模式是基于boost信號槽的方式實現的,然而boost信號槽涉及的接口調用層級很多,調用過程采用的是值拷貝的方式,因此效率比較低。
【
【發明內容】
】
[0004]有鑒于此,本發明提供了一種事件處理的方法和裝置,以便于提高觀察者模式的事件處理效率。
[0005]具體技術方案如下:
[0006]本發明提供了一種事件處理的方法,該方法包括:
[0007]事件監聽單元將自身的事件接口和要監聽的事件信息注冊到事件工廠;
[0008]所述事件工廠保存注冊的事件接口與事件信息的對應關系;
[0009]事件派發單元通過所述事件工廠枚舉出自身綁定的事件所對應的事件接口,并通過枚舉出的事件接口發送自身綁定的事件。
[0010]根據本發明一優選實施方式,所述事件監聽單元將自身的事件接口和要監聽的事件信息注冊到事件工廠包括:
[0011]所述事件監聽單元調用所述事件工廠提供的添加事件監聽者AddEventListener方法,將所述事件監聽單元自身的事件接口和要監聽的事件信息作為所調用方法的參數;或者,
[0012]所述事件監聽單元調用所述AddEventListener方法,將所述事件監聽單元自身的事件接口作為所調用方法的參數,其中所述事件接口通過預設的函數攜帶要監聽的事件
?目息O
[0013]根據本發明一優選實施方式,該方法還包括:
[0014]所述事件監聽單元調用所述事件工廠提供的移除事件監聽者RemoveEventListener方法,將所述事件監聽單元自身的事件接口和要監聽的事件信息作為所調用方法的參數,或者將所述事件監聽單元自身的事件接口作為所調用方法的參數,其中所述事件接口通過預設的函數攜帶要監聽的事件信息;
[0015]所述事件工廠刪除所述事件接口和事件信息的對應關系。
[0016]根據本發明一優選實施方式,所述事件派發單元通過所述事件工廠枚舉出自身綁定的事件所對應的事件接口包括:
[0017]所述事件派發單元調用所述事件工廠提供的枚舉事件監聽者EnumEventListener方法,將所述事件派發單元綁定的事件信息作為所調用方法的參數;
[0018]獲取所述事件工廠返回的所述事件派發單元綁定的事件所對應的事件接口。
[0019]根據本發明一優選實施方式,當所述事件派發單元綁定的事件被觸發時,執行通過所述事件工廠枚舉出自身綁定的事件所對應的事件接口的步驟。
[0020]本發明還提供了一種事件處理的裝置,該裝置包括:
[0021]事件監聽單元,用于將自身的事件接口和要監聽的事件信息注冊到事件工廠;
[0022]事件工廠,用于保存注冊的事件接口與事件信息的對應關系;
[0023]事件派發單元,用于通過所述事件工廠枚舉出自身綁定的事件所對應的事件接口,并通過枚舉出的事件接口發送自身綁定的事件。
[0024]根據本發明一優選實施方式,所述事件監聽單元,具體用于調用所述事件工廠提供的添加事件監聽者AddEventListener方法,將所述事件監聽單元自身的事件接口和要監聽的事件信息作為所調用方法的參數;或者,
[0025]所述事件監聽單元調用所述AddEventListener方法,將所述事件監聽單元自身的事件接口作為所調用方法的參數,其中所述事件接口通過預設的函數攜帶要監聽的事件
?目息O
[0026]根據本發明一優選實施方式,所述事件監聽單元,還用于調用所述事件工廠提供的移除事件監聽者RemoveEventListener方法,將所述事件監聽單元自身的事件接口和要監聽的事件信息作為所調用方法的參數,或者將所述事件監聽單元自身的事件接口作為所調用方法的參數,其中所述事件接口通過預設的函數攜帶要監聽的事件信息;
[0027]所述事件工廠,還用于刪除所述事件接口和事件信息的對應關系。
[0028]根據本發明一優選實施方式,所述事件工廠包括:事件工廠接口和事件工廠實現單元;
[0029]所述事件工廠接口,用于向所述事件監聽單元提供AddEventListener方法和RemoveEventLi stener 方法;
[0030]所述事件工廠實現單元,用于保存或刪除事件接口和事件信息的對應關系。
[0031]根據本發明一優選實施方式,所述事件派發單元,具體用于調用所述事件工廠提供的枚舉事件監聽者EnumEventListener方法,將所述事件派發單元綁定的事件信息作為所調用方法的參數;獲取所述事件工廠返回的所述事件派發單元綁定的事件所對應的事件接口。
[0032]根據本發明一優選實施方式,所述事件工廠包括:事件工廠實現單元和事件工廠枚舉接口 ;
[0033]所述事件工廠枚舉接口,用于向所述事件派發單元提供EnumEventListener方法,并向所述事件派發單元返回所述事件工廠實現單元確定的事件接口 ;
[0034]所述事件工廠實現單元,用于確定所述事件派發單元綁定的事件所對應的事件接
□ O
[0035]根據本發明一優選實施方式,所述事件派發單元在自身綁定的事件被觸發時,執行通過所述事件工廠枚舉出自身綁定的事件所對應的事件接口的操作。
[0036]由以上技術方案可以看出,通過本發明提供的方式,事件監聽單元僅需要將自身的事件接口和要監聽的事件信息注冊到事件工廠,事件派發單元僅需要通過事件工廠枚舉出自身綁定的事件所對應的事件接口,統一由事件工廠完成事件監聽單元和事件派發單元的對接,而事件監聽單元和事件派發單元之間無需通過多級接口調用和值拷貝的方式來進行事件和接口的對接,實現更加簡單,處理效率得到了提高。
【【附圖說明】】
[0037]圖1為本發明實施例提供的事件處理裝置的結構圖;
[0038]圖2為本發明實施例提供的事件處理方法流程圖;
[0039]圖3為本發明實施例提供的一個裝置的實例圖。
【【具體實施方式】】
[0040]為了使本發明的目的、技術方案和優點更加清楚,下面結合附圖和具體實施例對本發明進行詳細描述。
[0041]圖1為本發明實施例提供的事件處理裝置的結構圖,如圖1所示,該裝置可以包括:事件監聽單元00、事件工廠10和事件派發單元20,其中事件工廠10可以進一步包括事件工廠接口 11、事件工廠實現單元12和事件工廠枚舉接口 13。下面結合圖2所示的事件處理方法流程圖,對通過該事件處理裝置實現的事件處理方法進行詳細描述。
[0042]事件監聽單元00目的是為了監聽事件,通常事件監聽單元00在開發時就與具體的功能單元進行綁定,例如存在與用戶界面綁定的事件監聽單元,與存儲單元綁定的事件監聽單元等等。每個事件監聽單元存在對應的事件接口,通過該事件接口獲取事件信息。該事件接口和要監聽的事件信息也同樣是開發者預先設置好的。
[0043]如圖2中的步驟201所示,事件監聽單元00在初始化的時候,將自身的事件接口和要監聽的事件信息注冊到事件工廠10。
[0044]具體地,事件監聽單元00可以調用事件工廠接口 11提供的AddEventListener (添加事件監聽者)方法,將事件監聽單元00的事件接口和要監聽的事件信息作為AddEventListener 方法的參數。
[0045]還可以采用另外一種實現方式,即事件監聽單元00可以調用事件工廠接口 11提供的AddEventListener方法,將事件監聽單元00的事件接口作為AddEventListener方法的參數,其中在事件接口通過預設的函數攜帶要監聽的事件信息。這種方式實際上是預先將事件接口綁定了事件信息,例如事件接口可以預先綁定了 getEventname函數,該getEventname函數攜帶事件信息。
[0046]其中,事件接口可以是事件監聽單元00的接口類,事件信息可以是事件監聽單元00所監聽事件的名稱、編號、標識等。
[0047]在圖2所示的202中,事件工廠10保存注冊的事件接口與事件信息的對應關系。
[0048]具體地,事件工廠實現單元12負責保存事件監聽單元00注冊到事件工廠10的事件接口與事件信息的對應關系。由于在事件處理系統中可能存在多個事件監聽單元00(本發明所述的“多個”指的是多于一個),該多個事件監聽單元00可能對相同的事件進行監聽,也可能對不同的事件分別進行監聽。事件工廠10不用去區分具體的事件監聽單元00是誰,只要有事件監聽單元OO注冊事件接口和要監聽的事件信息,則事件工廠10就保存注冊的事件接口與事件信息的對應關系。
[0049]另外,事件監聽單元00還可以通過調用事件工廠10中事件工廠接口 11提供的RemoveEventListener (移除事件監聽者)方法,將事件監聽單元00的事件接口和要監聽的事件信息作為所調用方法的參數。事件工廠實現單元12刪除保存的該事件接口和事件信息的對應關系,這一過程可以稱為反注冊過程。
[0050]在圖2所示的203中,當事件派發單元20綁定的事件被觸發后,事件派發單元20通過事件工廠10枚舉出該事件派發單元20綁定的事件所對應的事件接口。
[0051]通常各事件都對應有事件派發單元20,該事件派發單元20負責調用事件接口,事件被觸發后,將事件派發給對應的事件接口,從而實現事件的派發。
[0052]在本步驟中,事件派發單元20可以調用事件工廠10的事件工廠枚舉接口 13提供的EnumEventListener (枚舉事件監聽者)方法,將事件派發單元20綁定的事件信息作為所調用方法的參數。事件工廠枚舉接口 13將事件工廠實現單元12確定的事件接口返回給事件派發單元20,事件實現單元12負責確定調用EnumEventListener方法時攜帶的事件信息所對應的事件接口。即事件派發單元20向事件工廠10提供綁定的事件信息,例如事件名稱、編號、標識等,由事件工廠10查詢所有事件接口與事件信息之間