A very common and very "programmer-friendly" variant is the delegate event model, which is provided by the most popular graphic frameworks.
This model is based on three entities:
- a control, which is the event source,
- consumers, also called listeners, that receive the events from the source,
- interfaces (in the broader meaning of the term) that describe the protocol by which every event is to be communicated.
Furthermore, the model requires that
- every listener must implement the interface for the event it wants to listen to
- every listener must register with the source to declare its desire to listen to some particular event
- every time the source generates an event, it communicates it to the registered listeners, following the protocol of the interface.
C# uses events as special delegates that can only be fired by the class that declares it. This allows for better abstraction. Here's an example:
delegate void Notifier (string sender); class Model { public event Notifier notifyViews; public void Change { ... notifyViews("Model"); } } class View1 { public View1(Model m) { m.notifyViews += new Notifier(this.Update1); } void Update1(string sender) { Console.WriteLine(sender + " was changed during update"); } } class View2 { public View2(Model m) { m.notifyViews += new Notifier(this.Update2); } void Update2(string sender) { Console.WriteLine(sender + " was changed"); } } class Test { static void Main { Model m = new Model; new View1(m); new View2(m); m.Change; } }Read more about this topic: Event (computing)
Famous quotes containing the words event and/or model:
“It is known that Whistler when asked how long it took him to paint one of his nocturnes answered: All of my life. With the same rigor he could have said that all of the centuries that preceded the moment when he painted were necessary. From that correct application of the law of causality it follows that the slightest event presupposes the inconceivable universe and, conversely, that the universe needs even the slightest of events.”
—Jorge Luis Borges (18991986)
“The Battle of Waterloo is a work of art with tension and drama with its unceasing change from hope to fear and back again, change which suddenly dissolves into a moment of extreme catastrophe, a model tragedy because the fate of Europe was determined within this individual fate.”
—Stefan Zweig (18811942)