Patrón de diseño "Patrón de observador"

¿Qué es el patrón del observador?

El modo de observador es un modo de comportamiento, que define una dependencia de uno a muchos, lo que permite que múltiples objetos observadores controlen un objeto sujeto al mismo tiempo, cuando el estado del objeto sujeto cambia, todos los objetos observadores serán notificados, de modo que ellos son capaces de actualizarse automáticamente.

Por qué usar el patrón Observer

El modo de observador puede lograr fácilmente un acoplamiento flexible entre objetos y mejorar la capacidad de mantenimiento y la escalabilidad del sistema. Por ejemplo, cuando cambia el estado de un objeto, podemos usar el patrón de observador para evitar el código estrechamente acoplado, lo que permite que varios objetos observadores respondan de forma independiente al cambio de estado del objeto sujeto.

¿Dónde lo usas en el trabajo?

En el desarrollo de Android, el patrón de observador se usa a menudo en los siguientes escenarios:

1) Cuando el usuario hace clic en un botón, es necesario que varios controles actualicen la pantalla al mismo tiempo. En este momento, el modo observador se puede usar para hacer que estos controles sean el observador del objeto del tema. Cuando cambia el estado del objeto del tema , se notifica al observador que se actualice.

2) Cuando el usuario necesita obtener ciertos datos en tiempo real, los datos se pueden usar como un objeto sujeto, y varios observadores monitorean el objeto sujeto. Cuando los datos cambian, el objeto sujeto notifica a todos los objetos observadores que se actualicen, de modo que datos de actualización en tiempo real.

3) Cuando el usuario necesite implementar la función del bus de eventos, el modo observador puede usarse para monitorear la ocurrencia de eventos mediante el registro de observadores. Cuando ocurre un evento, todos los observadores serán notificados para procesar la lógica correspondiente.

Ideas de diseño

En el modo observador, incluye principalmente los siguientes roles:

1) Tema abstracto: define la interfaz del objeto del tema, que incluye métodos para agregar, eliminar y notificar a los observadores.

2) Tema concreto: implemente la interfaz del tema abstracto, guarde la lista de observadores al mismo tiempo y notifique a todos los observadores cuando cambie el estado.

3) Observador abstracto: define la interfaz del observador, que contiene el método de actualización del mismo.

4) Observador específico: implementa la interfaz del observador abstracto e implementa específicamente su propia lógica de actualización.

Implementación de código del patrón de observador

Tomando como ejemplo el modo observador para implementar el bus de eventos, el código se implementa de la siguiente manera:
1. Tema abstracto

public interface Subject {
    
    
    void registerObserver(Observer observer);
    void removeObserver(Observer observer);
    void notifyObservers(Object obj);
}

2. Temas específicos

public class EventBus implements Subject{
    
    
    private List<Observer> observerList = new ArrayList<>();
    
    @Override
    public void registerObserver(Observer observer) {
    
    
        observerList.add(observer);
    }

    @Override
    public void removeObserver(Observer observer) {
    
    
        observerList.remove(observer);
    }

    @Override
    public void notifyObservers(Object obj) {
    
    
        for (Observer observer : observerList) {
    
    
            observer.update(obj);
        }
    }
}

3. Observador abstracto

public interface Observer {
    
    
    void update(Object obj);
}

4. Observadores específicos

public class MainObserver implements Observer {
    
    

    public MainObserver(Subject subject) {
    
    
        subject.registerObserver(this);
    }

    @Override
    public void update(Object obj) {
    
    
        //处理逻辑
    }
}

5. Ejemplo de uso

EventBus eventBus = new EventBus();
MainObserver mainObserver = new MainObserver(eventBus);
//事件发生时,通知所有观察者
eventBus.notifyObservers(obj);

Resumir

El patrón Observer es un patrón de diseño de uso común, que puede lograr un acoplamiento débil entre objetos y mejorar la capacidad de mantenimiento y la escalabilidad del sistema. En el desarrollo de Android, el modo de observador se usa a menudo para implementar funciones como el bus de eventos y la cooperación de control múltiple. Al aprender el patrón del observador, podemos comprender mejor las ideas y los principios del diseño orientado a objetos y mejorar nuestro nivel de diseño y capacidad de codificación.

Supongo que te gusta

Origin blog.csdn.net/weixin_45112340/article/details/130005165
Recomendado
Clasificación