哪个更好:多个事件的单个代表与多个事件的多个代理?

时间:2015-01-23 20:39:43

标签: events delegates

我很好奇,如果管理大量事件的单个代表比使用多个代理处理所有这些事件更好。

例如,假设我有50个事件都在同一个"类别"和班级。这些活动可以组成5个小组。您是否只为所有50个相关活动制作1个代表,或者为每个10个事件的特定组制作5个代表?

编辑:这可能听起来像一个显而易见的问题,但我没有足够的理解来自信地回答这个问题。

Edit2:这是一些示例代码。

    //## Left-Button
public delegate void LeftButtonHandler();
public static event LeftButtonHandler LeftButtonHeldEvent;
public static event LeftButtonHandler LeftButtonUpEvent;
private static void LeftButton(){
    if (Input.GetButton("KeyLeft")){
        if (LeftButtonHeldEvent != null)
            LeftButtonHeldEvent();
    }
}
private static void LeftButtonUp(){
    if(Input.GetButtonUp("KeyLeft")){
        if (LeftButtonUpEvent != null)
            LeftButtonUpEvent();
    }
}

//## Down-Button
public delegate void DownButtonHandler();
public static event DownButtonHandler DownButtonHeldEvent;
public static event DownButtonHandler DownButtonUpEvent;
private static void DownButton(){
    if (Input.GetButton("KeyDown")){
        if (DownButtonHeldEvent != null)
            DownButtonHeldEvent();
    }
}
private static void DownButtonUp() {
    if (Input.GetButtonUp("KeyDown")) {
        if (DownButtonHeldEvent != null)
            DownButtonUpEvent();
    }
}

关于这个问题,我有更多的投入,我正在投票。为每个密钥设置一个代表是否比为每个密钥使用新委托更好?

注意:这是统一的,但这不是一个统一的问题。我理解输出轮询发布事件有点荒谬,但统一并没有提供订阅自己的UI事件的方法。我现在并不特别关心我是否应该使用1名代表或多名代表。

1 个答案:

答案 0 :(得分:1)

根据你的例子,我将有一个处理程序,它接受一个包含按下/保持键的值的参数,例如:

public delegate void ButtonHandler(object sender, string whichButton);
public static event ButtonHandler ButtonHeldEvent;
public static event ButtonHandler ButtonUpEvent;

private static void ButtonHeld()
{
  string keyHeld = "..."; //Todo: Code to get which button is being held
  if (ButtonHeldEvent != null)
  {
     ButtonHeldEvent(this, keyHeld);
  }
}

private static void ButtonUp()
{
  string keyUp = "..."; //Todo: Code to get which button is up
  if (ButtonUpEvent != null)
  {
    ButtonUpEvent(this, keyUp);
  }
}

让活动的订阅者知道如果它是KeyLeft,KeyDown等该怎么做。