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:
“... every event has had its cause, and nothing, not the least wind that blows, is accident or causeless. To understand what happens now one must find the cause, which may be very long ago in its beginning, but is surely there, and therefore a knowledge of history as detailed as possible is essential if we are to comprehend the past and be prepared for the future.”
—Pearl S. Buck (18921973)
“The best way to teach a child restraint and generosity is to be a model of those qualities yourself. If your child sees that you want a particular item but refrain from buying it, either because it isnt practical or because you cant afford it, he will begin to understand restraint. Likewise, if you donate books or clothing to charity, take him with you to distribute the items to teach him about generosity.”
—Lawrence Balter (20th century)