|
■No17232 (επιστημη さん) に返信 >>イベントをもらってすぐに >>Selectとかswitchで分けなきゃいけないような >>実装は比較的ダメな気がします。 > > ハンドラをひとつにまとめたのがそもそもの間違い > ってことでしょか? >
public class Neko { public event EventHandler<NekoActionEventArgs> Act; protected void OnAct(NekoActionEventArgs e) { if (Act != null) Act.Invoke(this, e); } } public enum ActionType { Move, Eat, Meow, TailWag } public class NekoActionEventArgs : EventArgs { private ActionType Type; }
public class Kitten { public event EventHandler<EventArgs> Move; public event EventHandler<EventArgs> Eat; public event EventHandler<EventArgs> Meow; public event EventHandler<EventArgs> TailWag; protected void OnMove(NekoActionEventArgs e) { if (Move != null) Move.Invoke(this, e); } protected void OnEat(NekoActionEventArgs e) { if (Eat != null) Eat.Invoke(this, e); } protected void OnMeow(NekoActionEventArgs e) { if (Meow != null) Meow.Invoke(this, e); } protected void OnTailWag(NekoActionEventArgs e) { if (TailWag != null) TailWag.Invoke(this, e); } }
Nekoはダメ、KittenはOKかと。 この例なら当たり前なんですが。
もっとダメパターンとかOKパターンをたくさんあつめて、 どう優先順位をつけてどうわけたらいいか、 指針が欲しいです。
まぁ、結局オブジェクトをどうわけるのかといった、 よくある議論と同じなのですが、 イベントという概念まで議論をしているケースが なかなかないのですよね。
|