觀察者模式主要用于當一個對象發生改變時,其關聯的所有對象都會收到通知,屬于事件驅動類型的設計模式,可以對事件進行監聽和響應。下面簡單介紹下它的使用:
1 定義事件
import org.springframework.context.ApplicationEvent;public class OrderCreatedEvent extends ApplicationEvent {private final Long orderId;public OrderCreatedEvent(Object source, Long orderId) {super(source);this.orderId = orderId;}public Long getOrderId() {return orderId;}
}
2 事件發布者
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Service;@Service
public class OrderService {private final ApplicationEventPublisher eventPublisher;public OrderService(ApplicationEventPublisher eventPublisher) {this.eventPublisher = eventPublisher;}public void createOrder(Long orderId) {// 創建訂單邏輯System.out.println("訂單創建成功: " + orderId);// 發布事件eventPublisher.publishEvent(new OrderCreatedEvent(this, orderId));}
}
3 事件監聽者
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;@Component
public class NotificationService {@EventListenerpublic void handleOrderCreated(OrderCreatedEvent event) {System.out.println("發送通知:訂單 " + event.getOrderId() + " 創建成功!");}
}
注意事項:觀察者模式只能在同一個微服務中使用,跨服務中將失效。