Diseño: el patrón del observador de patrones de diseño

1. El concepto de modo de observador

El concepto de patrón de observador es bastante bueno aquí.

Cuando existe una relación de uno a muchos entre objetos, se utiliza el patrón de observador (Patrón de observador). Por ejemplo, cuando se modifica un objeto, sus objetos dependientes se notificarán automáticamente. El patrón del observador es un patrón de comportamiento.

Intención: definir una relación de dependencia de uno a varios entre objetos. Cuando cambia el estado de un objeto, todos los objetos que dependen de él son notificados y actualizados automáticamente.

La solución principal: el problema de notificar a otros objetos cuando cambia el estado de un objeto, y la facilidad de uso y el bajo acoplamiento deben ser considerados para asegurar un alto grado de colaboración.

Cuándo usarlo: cuando el estado de un objeto (objeto de destino) cambia, todos los objetos dependientes (objetos de observador) serán notificados y transmitidos notificaciones.

Cómo resolverlo: utilizando tecnología orientada a objetos, esta dependencia se puede debilitar.

Código clave: hay una ArrayList en la clase abstracta para almacenar los observadores.

2. Implementación de código Java

interface Observer{
    
    
    void handleMessage(String msg);
}

class ObserverOne implements Observer{
    
    
    public ObserverOne(Subject subject) {
    
    
        subject.attach(this);
    }
    @Override
    public void handleMessage(String msg) {
    
    
        System.out.println(this.getClass().getName()+"接收到消息:"+msg);
    }
}

class ObserverTwo implements Observer{
    
    
    public ObserverTwo(Subject subject) {
    
    
        subject.attach(this);
    }
    @Override
    public void handleMessage(String msg) {
    
    
        System.out.println(this.getClass().getName()+"接收到消息:"+msg);
    }
}
class Subject{
    
    
    private List<Observer> observerList;
    public Subject() {
    
    
        this.observerList = new ArrayList<>();
    }
    public void attach(Observer observer){
    
    
        this.observerList.add(observer);
    }
    public void boardcast(String msg){
    
    
        for (Observer observer:observerList){
    
    
            observer.handleMessage(msg);
        }
    }
}

public class ObserverDemo {
    
    
    public static void main(String[] args) {
    
    
        Subject subject=new Subject();
        Observer observer1=new ObserverOne(subject);
        Observer observer2=new ObserverTwo(subject);
        subject.boardcast("广播消息");
    }
}

resultado de la operación:

com.yize.offer.ObserverOne接收到消息:广播消息
com.yize.offer.ObserverTwo接收到消息:广播消息

Supongo que te gusta

Origin blog.csdn.net/qq_23594799/article/details/105517391
Recomendado
Clasificación