2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
El patrón Observador también se conoce como patrón Publicar/Suscribir. GOF define el patrón de observador de la siguiente manera: define una relación de dependencia de uno a muchos entre objetos, lo que permite que varios objetos de observador se centren en el mismo objeto al mismo tiempo. Cuando el estado del objeto cambia, todos los objetos que dependen de él se vuelven. Notificado y actualizado automáticamente.
Como se muestra en la figura siguiente, el patrón del observador contiene 5 tipos de objetos.
Veamos la implementación específica.
(1) Interfaz de observador Observer.java define una interfaz de actualización unificada update(). Su código fuente se muestra en el siguiente programa.
package behavior.observer;
/**
* @author Minggg
* 观察者接口
*/
public interface Observer {
public void update();
}
(2) La clase de implementación del observador Observer1.java es una implementación específica de un observador y su función de actualización se utiliza para enviar una cadena a la consola. Su código fuente se muestra en el siguiente programa.
package behavior.observer;
/**
* @author Minggg
* 具体观察者
*/
public class Observer1 implements Observer {
public void update(){
System.out.println("观察者1得到通知!");
}
}
(3) La clase de implementación del observador Observer2.java es una implementación específica de otro observador y su función de actualización se utiliza para enviar una cadena a la consola. Su código fuente se muestra en el siguiente programa.
package behavior.observer;
/**
* @author Minggg
* 具体观察者
*/
public class Observer2 implements Observer {
public void update(){
System.out.println("观察者2得到通知!");
}
}
(4) La interfaz observada Subject.java define tres funciones de interfaz para observadores operativos y define una interfaz de función operativa específica para representar sus propias funciones. Su código fuente se muestra en el siguiente programa.
package behavior.observer;
/**
* @author Minggg
* 被观察者接口
*/
public interface Subject {
// 增加观察者
public void attach(Observer observer);
// 删除观察者
public void detach(Observer observer);
// 通知所有观察者
public void notifyObservers();
// 自身的操作接口
public void operation();
}
(5) La clase abstracta observada AbstractSubject.java proporciona un vector de lista de vectores para guardar todos los objetos del observador y escribir funciones de implementación para operar los objetos de la lista. Su código fuente se muestra en el siguiente programa.
package behavior.observer;
import java.util.Enumeration;
import java.util.Vector;
/**
* @author Minggg
* 被观察者抽象类
*/
public abstract class AbstractSubject implements Subject {
private Vector