有人可以告诉我这两种不同方法之间的区别。我知道他们两个都可以处理相同的情况,但使用第一种或第二种方法是否有任何利弊?你们会选择什么?为什么?
直接订阅活动(使用静态活动):
public class MyEffect : BaseEffect
{
public delegate void EventHandler (Element sender, Unit target);
public static event EventHandler OnMyEvent;
public Damage(Element elementOwner)
{
this.Owner = elementOwner;
}
public void DispatchEvent(Unit target)
{
if (OnMyEvent != null)
{
OnMyEvent(this.Owner, target);
}
}
}
=>活动订阅:
MyEffect.OnMyEvent += CallBack;
或通过Singleton订阅:
public class MyEffect : BaseEffect
{
public delegate void EventHandler (Element sender, Unit target);
public event EventHandler OnMyEvent;
private static MyEffect instance;
public static MyEffect Instance
{
get
{
return instance;
}
}
public Damage(Element elementOwner)
{
this.Owner = elementOwner;
}
public void DispatchEvent(Unit target)
{
if (OnMyEvent != null)
{
OnMyEvent(this.Owner, target);
}
}
}
=>活动订阅:
MyEffect.Instance.OnMyEvent += CallBack;
答案 0 :(得分:0)
使用第一种方法。你必须实例化的对象是轻量级的,除非你有明显的理由使用单例(昂贵的对象或大量使用的等),采用最简单的方法;这是上面的第一个。