1

我想弄清楚我是否无意中使用了设计模式?请帮帮我。

我有一个将生成事件(event1,event 2,... eventn)的应用程序。

我有另一个库(事件处理库),其中编写了事件处理方法。

我使用一个接口(Communicator),它的方法是由事件处理程序库实现的“GenerateEvent”。

最后,生成事件的主应用程序......使用反射加载事件处理程序库,并在运行时根据事件编号,事件特定类(事件处理程序)被挂钩。主应用程序使用接口方法 GenerateEvent 来发送事件

这是一种设计模式,因为在两个程序集之间使用接口来协同工作?如果我的解释不够,我可以提供更多关于伪代码的细节。

编辑:想补充一下,事件的结果再次通过通信器接口返回到主应用程序,该接口具有另一种方法 SendResult() (从事件处理程序到主应用程序)。现在这个返回功能会改变模式吗?它可能是一种工厂设计模式。动态加载(通过反射)+根据事件初始化子类??

4

3 回答 3

0

这是事件生成的观察者。不确定通过反射动态加载

于 2012-08-01T07:38:21.310 回答
0

没有细节,很难有信心回答,但是由于您提到了反射并且看起来您有一个发布/订阅模型,它听起来类似于事件总线,它是观察者模式的一种实现。

如果您阅读那篇文章,您会看到它提到发布/订阅本身就是一种模式,所以这件事绝对值得商榷,您实现了哪种模式:)

于 2012-08-01T07:35:26.460 回答
0

在没有具体细节的情况下很难断定您是否正确使用了该模式。是的,正如其他人提到的,您似乎有基于事件的发布者-订阅者模型,很可能它可能是观察者模式。请提供更多信息!

观察者/发布者-订阅者模式:一个对象订阅另一个对象的特定活动并获得通知。订阅者也称为观察者,而被观察的对象称为发布者或主题。发布者在发生重要事件时通知(调用)所有订阅者,并且可能经常以事件对象的形式传递消息。

看起来您的 Communicator 类是生成事件的发布者,而您编写的事件处理程序库是订阅者!

于 2012-08-01T07:47:02.893 回答