Si solo tiene un oyente (también conocido como observador), no se gana nada, pero si tiene varios oyentes, le permite abstraer los detalles.
Tomemos un ActionListener: puedo adjuntar un ActionListener a cualquier clase, permitiéndole recibir acciones. O bien, podemos usar un ejemplo más simple, como un botón de timbre.
Cuando se presiona, es posible que desee que toque el timbre de la puerta y que encienda luces, porque una de las personas que vive en la casa es sorda. Eso significa que tenemos tanto el controlador de timbre como el controlador de luz con los que debemos lidiar.
- ¿Cuál es la relación entre las redes neuronales y la computación cuántica?
- ¿Es D-Wave 2X la computadora más rápida del mundo?
- ¿Cuáles son los beneficios de una computadora cuántica?
- ¿Cuál es una buena analogía para explicar los números cuánticos?
- ¿Es posible usar Go Language para programar una computadora cuántica?
Obviamente, el controlador de luz hace más que solo controlar el parpadeo de las luces, y el timbre también puede tener otras funciones, como sonar cuando suena el teléfono.
Esto significa que queremos una interfaz estandarizada para ambos, pero permitimos que cada uno se especialice. Por lo tanto, hacemos la siguiente interfaz:
Interfaz pública DoorBellListener {
puerta vacía pública BellPushed ();
}
Solo necesitamos hacerlo para que el controlador de luz:
LightController de clase pública implementa DoorBellListener
{
…
puerta vacía pública BellPushed ()
{
luces de destello
}
…
}
y para el controlador de timbre:
RingerController de clase pública
{
…
puerta vacía pública BellPushed ()
{
timbre
}
…
}