2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
O padrão Observer também é conhecido como padrão Publicar/Assinar. GOF define o padrão do observador da seguinte forma: Define um relacionamento de dependência um-para-muitos entre objetos, permitindo que vários objetos observadores se concentrem no mesmo objeto ao mesmo tempo. Quando o estado do objeto muda, todos os objetos que dependem dele são obtidos. Notificado e atualizado automaticamente.
Conforme mostrado na figura abaixo, o padrão observador contém 5 tipos de objetos.
Vejamos a implementação específica.
(1) Interface do observador Observer.java define uma interface de atualização unificada update(). Seu código-fonte é mostrado no programa a seguir.
package behavior.observer;
/**
* @author Minggg
* 观察者接口
*/
public interface Observer {
public void update();
}
(2) A classe de implementação do observador Observer1.java é uma implementação específica de um observador e sua função de atualização é usada para enviar uma string para o console. Seu código-fonte é mostrado no programa a seguir.
package behavior.observer;
/**
* @author Minggg
* 具体观察者
*/
public class Observer1 implements Observer {
public void update(){
System.out.println("观察者1得到通知!");
}
}
(3) A classe de implementação do observador Observer2.java é uma implementação específica de outro observador e sua função de atualização é usada para enviar uma string para o console. Seu código-fonte é mostrado no programa a seguir.
package behavior.observer;
/**
* @author Minggg
* 具体观察者
*/
public class Observer2 implements Observer {
public void update(){
System.out.println("观察者2得到通知!");
}
}
(4) A interface observada Subject.java define três funções de interface para observadores operacionais e define uma interface de função operacional específica para representar suas próprias funções. Seu código-fonte é mostrado no programa a seguir.
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) A classe abstrata observada AbstractSubject.java fornece um vetor de lista de vetores para salvar todos os objetos observadores e escrever funções de implementação para operar os objetos da lista. Seu código-fonte é mostrado no programa a seguir.
package behavior.observer;
import java.util.Enumeration;
import java.util.Vector;
/**
* @author Minggg
* 被观察者抽象类
*/
public abstract class AbstractSubject implements Subject {
private Vector