[Combate real del proyecto] Modo observador del modo de diseño, comportamiento del observador

1. Modo observador

1.1 ¿Qué es el patrón del observador?

El modo observador es un patrón de diseño que define una dependencia de uno a muchos, lo que permite que varios objetos observadores controlen un objeto sujeto al mismo tiempo. Todos los objetos observadores se actualizan automáticamente cuando cambia el estado del objeto sujeto.

El patrón Observer define una dependencia de varios equipos, lo que permite que varios objetos de observador supervisen un objeto sujeto al mismo tiempo. Este objeto sujeto notifica a todos los objetos observadores cuando hay un cambio de estado, lo que les permite actualizarse automáticamente.

1.2 El papel principal del patrón observador

Las funciones principales del patrón Observer incluyen:

1.2.1 Asunto

El objeto observado, si hay un cambio de estado, notificará a todos los objetos observadores.

1.2.2 Objeto observador (Observer)

Observer, que se suscribe a los cambios de estado del objeto sujeto. Cuando cambie el estado del objeto sujeto, se notificará al objeto observador.

1.3 El proceso básico del modo observador

El proceso básico del modo observador es el siguiente:

  • El objeto sujeto se suscribe al objeto observador, y el objeto observador comienza a monitorear los cambios de estado del objeto sujeto.
  • Cuando cambia el estado del objeto sujeto, se notifica al objeto observador y se actualiza.

2. Ejemplos de uso

El siguiente es un código de muestra de patrón de observador simple escrito en Java:

import java.util.ArrayList;
import java.util.List;

interface Subject {
    
    
    void attach(Observer observer);
    void detach(Observer observer);
    void notifyObservers();
}

class WeatherData implements Subject {
    
    
    private List<Observer> observers = new ArrayList<>();
    private String weatherCondition;

    public WeatherData(String weatherCondition) {
    
    
        this.weatherCondition = weatherCondition;
    }

    public void attach(Observer observer) {
    
    
			(weatherCondition);
        }
    }
}

interface Observer {
    
    
    void update(String weatherCondition);
}

class WeatherStation {
    
    
    private Subject weatherData;

    public WeatherStation(Subject weatherData) {
    
    
        this.weatherData = weatherData;
    }

    public void reportWeather(String weatherCondition) {
    
    
        weatherData.notifyObservers();
    }
}

class Radio implements Observer {
    
    
    private WeatherStation weatherStation;

    public Radio(WeatherStation weatherStation) {
    
    
        this

class Television implements Observer {
    
    
    private WeatherStation weatherStation;

    public Television(WeatherStation weatherStation) {
    
    
        this.weatherStation = weatherStation;
        weatherStation.attach(this);
    }

    @Override
    public void update(Sunny");
        WeatherStation weatherStation = new WeatherStation(weatherData);
        Radio radio = new Radio(weatherStation);
         Television television = new Television(weatherStation);
         weatherData.notifyObservers();
    }
}

En este ejemplo, la interfaz Asunto define el objeto sujeto en el patrón Observador y la clase WeatherData implementa la interfaz Asunto y representa los datos meteorológicos. La clase WeatherStation es un observador específico en el patrón de observador, establece una relación con las clases de Radio y Televisión, y llama al método notificarObservers del objeto sujeto en su método reportWeather para notificar a todos los observadores que actualicen el estado.

En la función principal, creamos el objeto WeatherData, el objeto WeatherStation, el objeto Radio y el objeto Television, y cuando se llama al método de notificaciónObservers del objeto WeatherData, el objeto observador actualizará su estado.

Supongo que te gusta

Origin blog.csdn.net/wstever/article/details/129890052
Recomendado
Clasificación