設計模式 | 觀察者模式介紹、使用案例

目錄

觀察者模式定義

觀察者模式使用案例


觀察者模式定義

觀察者模式定義:定義了對象之間一對多的依賴,讓多個觀察者對象同時監聽一個主題對象,當主題對象發生變化時,它的所有依賴者都會收到通知並更新

適用場景:關聯行爲場景,建立一套觸發的機制 

優點:觀察者和被觀察者之間建立了一套抽象的耦合,支持廣播通信

缺點:觀察者之間有過多的細節依賴,提高了時間的消耗和程序的複雜度;使用時應該梳理清楚調用關係,避免重複調用

觀察者模式使用案例

觀察者模式在工作種使用較多,sring框架提供了spring event(spring 事件)來處理同一jvm的事件通知業務,注意是同一jvm。

SpringEvent的使用十分簡單,核心內容爲創建繼承了ApplicationEvent的事件、調用ApplicationEventPublisher發送事件、接收者實現ApplicationListener方法接收事件。使用分爲以下三個步驟:

聲明事件(繼承ApplicationEvent類)

public class UserRegisterEvent extends ApplicationEvent {
    private static final long serialVersionUID = -4829855648590354032L;
    public UserRegisterEvent(User user) {
        super(user);
    }
    public User getUser() {
        return (User) source;
    }
}

發送事件(調用ApplicationEventPublisher的publishEvent方法發送事件)

@Autowired
private ApplicationEventPublisher publisher;
@Override
public void register(User user) throws Exception {
    publisher.publishEvent(new UserRegisterEvent(user));
}

監聽器接收事件(新建監聽類,實現ApplicationListener接口,實現onApplicationEvent方法)

public class CouponListener implements ApplicationListener<UserRegisterEvent> {
    @Override
    public void onApplicationEvent(UserRegisterEvent event) {
        System.out.println(event.getUser());
    }
}

當被監聽者發佈事件後,監聽者會收到事件。二者解耦,互相不需要關注業務是否處理成果。

spring-event 源碼解析: springEvent 源碼分析


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章