Das Problem ist sehr einfach. Ein Objekt muss einige Ereignisse melden, die für Beobachter von Interesse sein könnten.Was entspricht .NET-Ereignissen in Ruby?
Als ich saß, um ein Design zu validieren, das ich jetzt in Ruby aufbaute, nur um es zu validieren. Ich finde mich selbst nicht sicher, wie ich die Objektereignisse implementieren soll. In .Net wäre dies ein One-Liner .. .Net macht auch Handler Methode Unterschrift Verifikation, etc. z.B.
// Object with events
public delegate void HandlerSignature(int a);
public event HandlerSignature MyEvent;
public event HandlerSignature AnotherCriticalEvent;
// Client
MyObject.MyEvent += new HandlerSignature(MyHandlerMethod); // MyHandlerMethod has same signature as delegate
Gibt es ein EventDispatcher-Modul oder etwas, das ich vermisse, das ich an eine Ruby-Klasse anschließen kann? Hoffe auf eine Antwort, die mit Rubys Prinzip der geringsten Überraschung zusammenspielt. Ein Ereignis wäre der Name des Ereignisses plus eine Warteschlange von [observer, methodName] -Objekten, die aufgerufen werden müssen, wenn das Ereignis stattfindet.
Nicht ganz .. Dies scheint eine Implementierung des Observer Design Pattern zu sein. Was ich brauche, ist, dass das Boiler-Objekt mehrere Ereignisse wie WaterExhausted, Started usw. und Clients, die ihre Handler abonniert haben, freigibt (nicht auf eine einzige "Update" -Methode beschränkt). – Gishu