Серия шаблонов проектирования Java — Метод написания шаблона Observer 2: JDK

Исходный URL-адрес: Серия шаблонов проектирования Java — Метод написания шаблонов Observer 2: Блог JDK_IT — Блог CSDN

Введение

иллюстрировать

В этой статье используется пример, чтобы представить способ написания шаблона наблюдателя: JDK.

Введение в шаблон JDK Observer

В Java класс java.util.Observable и интерфейс java.util.Observer определяют шаблон наблюдателя, пока эти два интерфейса реализованы, шаблон наблюдателя может быть написан.

1. Наблюдаемый

Класс Observable является абстрактным целевым классом (наблюдаемым). Он имеет переменную-член коллекции Vector для сохранения всех объектов-наблюдателей, которые будут уведомлены. Давайте представим его три наиболее важных метода.

  • Метод void addObserver(Observer o): используется для добавления нового объекта-наблюдателя в коллекцию.
  • Метод void notifyObservers(Object arg): вызовите метод обновления всех объектов-наблюдателей в коллекции, чтобы уведомить их об изменениях данных. Обычно наблюдатели, присоединившиеся к набору позже, уведомляются раньше.
  • Метод void setChange(): используется для установки внутреннего флага логического типа, указывающего, что целевой объект изменился. notifyObservers() будет уведомлять наблюдателей только тогда, когда это правда.

2. Наблюдатель

Интерфейс Observer — это абстрактный наблюдатель, который отслеживает изменения в целевом объекте.Когда целевой объект изменяется, наблюдатель уведомляется и вызывает метод обновления для выполнения соответствующей работы.

пример

Здесь используется случай, близкий к реальной сцене: когда заказ отменяется, должна быть серия операций, таких как: бизнес-аккаунт должен вернуть деньги пользователю, а бизнес-инвентарь должен вернуть количество товара.

В этом сценарии заказ на отмену является наблюдаемым объектом, а бизнес по учетным записям и бизнес по запасам — наблюдателями.

структура проекта

класс бизнес-данных 

При отмене заказа субъект передаст эти данные заинтересованным наблюдателям.

package com.knife.designPattern.jdk.bo;

import lombok.Data;

@Data
public class CancelOrderBO {
    private String orderNo;
}

тема

package com.knife.designPattern.jdk.subject;
 
import com.knife.designPattern.jdk.bo.CancelOrderBO;

import java.util.Observable;
 
public class CancelOrderSubject extends Observable {

    public void process(CancelOrderBO cancelOrderBO) {
        super.setChanged(); //changed  = true
        super.notifyObservers(cancelOrderBO);
    }
}
 

наблюдатель

Аккаунт Business Observer

Для простоты обслуживания эта статья была перенесена на этот веб-сайт: Написание шаблона Java Observer 2: JDK — мастер самостоятельного изучения

Guess you like

Origin blog.csdn.net/feiying0canglang/article/details/130831078