La principal investigación en este artículo es la implementación de funciones de devolución de llamada Java y patrones de observador. El código de introducción e implementación específico es el siguiente.
El modo Observer (a veces llamado Modo Publish-Subscribe, modo de visión del modelo, modo de lista de origen o modo esclavo) es un tipo de modo de diseño de software. En este modo, un objeto objetivo gestiona todos los objetos observadores que dependen de él y emiten notificaciones activamente cuando su estado cambia. Esto generalmente se logra llamando a los métodos de cada observador. Este patrón generalmente se usa para implementar sistemas de procesamiento de eventos.
De hecho, el modelo Observador tiene un entorno de uso común con los puentes y estrategias mencionadas anteriormente: encapsular los cambios de forma independiente para lograr la reutilización y el desacoplamiento máximo. La diferencia entre el observador y los dos últimos es que el objetivo en el patrón del observador y el cambio en el observador no son independientes, sino que tienen alguna conexión.
El modo Observer se implementa en Java a través de la clase observable y la interfaz Observer. Un objeto observador monitorea los cambios de un objeto observable. Cuando el objeto observable cambia, se notifica al observador y puede realizar el trabajo correspondiente.
paquete com.demo.test; import java.util.observable; import java.util.observer; // En el modo observador, la clase de destino mantiene las referencias de todos los observadores, mientras que la devolución de llamada solo mantiene una clase pública de referencia ObserverCallbackDemo {// Observera Asteratic classerBserver Investements {@@@@@@@@@@@@@@opers observador observador (observador observador observador (observador Observera (observador Varsere O,@@@@@@@@@@@@@@@@@@opers observador observador (observador observador observador (observador observador (observador Observera Objeto arg) {System.out.println ("ConcreteBSerVera Update");}} // Observer Bstatic Class ConcreteBServerb implementa Observer {@Override public Void Update (observable O, objeto de objeto) {public void ChangeValue () {// El método protegido solo se puede llamar en subclase setchanged (); notifyObServers ();}}} // interfaz de función de devolución de llamada interfaz icallback {public void onCall ();} // Callback Clase Class CallbackDemo {Private Icallback Callback; public Void setListener (icallback) callback;} public void call () {callback.OnCall ();}} public static void main (string [] args) {// observverConcreteObSerVera ObserVera = new ConcreteBSerVera (); concreteObServerB ObserverBe = new ConcreteBerverb (); ConcreteBSerVable ConcreteBServable (); observable.addoBServer (observva); observable.addoBServer (observb); system.out.println ("countObServers =" + observable.countObServers ()); observable.changeValue (); // Callback Funter CallbackdemeDemo = new New CallbackDemo (); callbackDemo.setListener (new Icallback () {@Override public void onCall () {System.out.println ("Callback Oncall");}}); callbackDemo.call ();}}Resultado de salida:
countObServers = 2
Actualización de concreteObServerb
Actualización de concreteobservera
devolución de llamada Oncall
En el código anterior, podemos ver que la función de devolución de llamada debe pertenecer al patrón del observador, y el propósito es reemplazar el mecanismo de round-robin y reducir el acoplamiento entre componentes. En el modo Observador, la clase de destino mantiene las referencias de todos los observadores, mientras que la devolución de llamada solo mantiene una referencia.
Lo anterior tiene que ver con las funciones de devolución de llamada de Java y el código de instancia de patrón de observador en este artículo, espero que sea útil para todos. Los amigos interesados pueden continuar referiéndose a otros temas relacionados en este sitio. Si hay alguna deficiencia, deje un mensaje para señalarlo. ¡Gracias amigos por su apoyo para este sitio!