【发布时间】:2016-02-13 22:25:38
【问题描述】:
Java 和 C# 在各自的事件处理技术上有所不同。在 Java 中,您编写程序可以调用的接口或类。在 C# 中,使用事件和委托的方式有所不同。
C++ 有某种形式的事件处理吗?
我的理解是在 Java 事件中是这样完成的:
class Class1
{
private ArrayList<MyEventListener> listeners;
//Class stuff
public void doEvent () {for(MyEventListener e : listeners) {e.eventHappened(args);}
public void addToListeners(MyEventListener eventListener) {listeners.add(eventListener);
public void removeFromListeners(MyEventListener eventListener) {listeners.add(eventListener);
public interface MyEventListener
{
void eventHappend (Anything passable);
}
}
我想 C++ 可以类似地完成
Define new Class
{
Define Array (Java ArrayList/List) of the abstract class or interface below
//Define other unrelated class stuff
Define add to listeners function
Define remove from listeners function
Define inner interface (maybe a C++ abstract class would work instead as interfaces don't exist in C++) to act as event
Define function in inner abstract event class to be the actual part of the code that represents the event
Define call all listeners function
}
这有意义吗?老实说,如果没有事件侦听器/处理程序系统,我无法看到如何编程任何东西,我想我已经接近了。
您如何处理来自另一种语言的事件?
【问题讨论】:
-
研究设计模式。
-
这取决于你对“有一些适当的事件处理”的定义。
-
C++ 作为一门语言根本不知道事件。
-
如果我没有完全错的话,Java作为一门语言也不知道事件,它只是实现东西的主流方式。
-
我会将其表述为一个答案,然后上/下投票者会判断它是否是一个好的答案;)
标签: java c# c++ events listeners