El modelo de delegación presupone la existencia de tres tipos de objetos:
Los tres son muy claros. En primer lugar el Container que no es más que el escenario donde están montados los actores, puede ser movido o cambiarse su tamaño. Un evento Mouse debe informar el estado del mouse en el instante en que se dispara el evento. Un evento Keyboard que se dispara si una tecla se oprimió o soltó y debe capturar cual fue.
>Cuales son nuestras fuentes de eventos? Entendemos que podría ser cualquier actor o la escena misma. Surge en consecuencia la necesidad de diferenciar los distintos elementos de una imagen ya que los requerimientos de interacción de los actores dentro de una misma escena pueden ser muy diversos. En resumen se deben poder individualizar los actores lo que deriva en la existencia de la clase actor.
La figura anterior muestra la jerarquía de estas fuentes de eventos. Un objeto bicotiInteractionSource puede ser por lo tanto: la escena (Container) o un actor particular (bicotiActor). El container puede disparar cualquier tipo de evento de los previstos, mientras que el actor solo dispara eventos del mouse. El actor debe contener la información que le permita al visualizador presentarlo dentro de la escena (una vez fijada su posición) independientemente de la biblioteca gráfica.
El último de los componentes involucrados en el modelo de delegación es el observador(Listener) responsable de procesar los eventos disparados por las fuentes ante las que está acreditado.
El modelo de delegación provee un mecanismo: flexible, extensible, fácil de entender, que permite la creación de código de manejo de eventos robusto y poco propenso a error. Un análisis extenso de las virtudes del modelo contrastadas con modelos anteriores se encuentra en [Inc99] y más en detalle en [Ham97].