Event (computing) - Delegate Event Model

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:

    The vanishing volatile froth of the present which any shadow will alter, any thought blow away, any event annihilate, is every moment converted into the Adamantine Record of the past.
    Ralph Waldo Emerson (1803–1882)

    I’d like to be the first model who becomes a woman.
    Lauren Hutton (b. 1944)