使用界面进行不同事件处理的最佳做法

时间:2016-04-18 08:45:56

标签: php oop events design-patterns interface

我有一个常见的方法,即onMessage,它接受来自不同客户端(Websocket客户端)的输入。

客户端以特定数据格式发送不同的消息,即

{
    "event" : "init",
    "data" : {}
}

所有这些不同的消息都由onMessage函数解析。

现在我有一个基于例如消息事件的用例。如果事件是init发布的内容,如果事件是heartbeat发布的内容等。

什么是最通用的方式,以便稍后可以添加具有不同实现的事件。

到目前为止,我有一个想法,我必须使用接口。我正在做的是我有一个名为EventInterface的接口,其中publishgetName方法。

然后我创建了一个名为Init的类,它实现了EventInterface并定义了publish& getName方法。

现在我如何将onMessage函数与这些不同的Event类连接起来。这是我认为的不同事件听众的类型。

现在我想到的一个解决方案是创建一个名为Events的类,它将所有事件Object,即Init类对象,HeartBeat类对象存储在一个数组中。

因此,当我从Events创建对象并从onMessage方法传递message并调用magic方法时,它循环遍历事件对象数组并使用相应事件类的getName方法匹配名称并调用发布方法

如果这是处理此用例的最佳方式,请使用Idk。如果这样可以,那么无论如何我可以避免手动将对象添加到Events类的事件对象方法中?或者没关系?

0 个答案:

没有答案