# Event 事件 事件是一种具有封装与可控顺序的观察者实现。创建事件只需要通过继承 `apiqqut.event.event` 下 `class Event`,随后提供给订阅者即可。 事件中可以定义一些数据并作为构造函数的参数传递。 ```d class DataEvent : Event { string text; this(string text) { this.text = text; } } ``` 当完成事件创建,现在就可以订阅。订阅顺序会影响接收顺序,但是优先级 `EventPriority` 会强调顺序。当前版本优先级分为三种:最高级 `High`,默认级 `Common`, 最低级 `Low`。在订阅时的第二参数中提供优先级,默认为默认级 `common`。 ```d void exampleFunc(DataEvent event) { event.text ~= "Hello"; } void main() { registerEvent(&exampleFunc); } ``` 随后可以在任何地方广播分发事件。因为我们需要回收事件并检查内部成员,因此我们实例化到单独变量。 ```d auto event = new DataEvent(""); postEvent(event); ``` 现在可以检查值。 ```d writeln(event.text); // Output: Hello ```