Design - o padrão observador de padrões de design

1. O conceito de modo de observador

O conceito do padrão do observador é muito bom aqui

Quando há um relacionamento um-para-muitos entre os objetos, o padrão do observador (Padrão Observer) é usado. Por exemplo, quando um objeto é modificado, seus objetos dependentes serão notificados automaticamente. O padrão do observador é um padrão comportamental.

Intento: Definir uma relação de dependência um-para-muitos entre os objetos. Quando o estado de um objeto muda, todos os objetos que dependem dele são notificados e atualizados automaticamente.

A principal solução: o problema de notificar outros objetos quando o estado de um objeto muda, e a facilidade de uso e o baixo acoplamento devem ser considerados para garantir um alto grau de colaboração.

Quando usar: Quando o estado de um objeto (objeto alvo) muda, todos os objetos dependentes (objetos observadores) serão notificados e notificados por broadcast.

Como resolver: usando a tecnologia orientada a objetos, essa dependência pode ser enfraquecida.

Código-chave: há um ArrayList na classe abstrata para armazenar os observadores.

2. Implementação 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 da operação:

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

Acho que você gosta

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