寫個責任鏈模式(混用觀察者)

定義:

責任鏈模式重點在於鏈上,可以在發生者和處理者之間解耦,使事件在鏈上傳遞,直到有一個類處理了這個事件。

在工作中,我們跟觀察者模式混用在一起,

處理方法實現對應的接口,在spring中可以加入@Order定義加載順序


觀察者:
@Component
public class XEventDispatch implements Observer {
    @Autowired
    private List<XEventCustomer>xEventCustomers;

    public void update(Observable source, Object arg) {
        //事件的源頭
        X x = (X) arg;

        //事件
        XEvent event = (XEvent) source;
	//責任鏈變種
        for (XEventCustomer xEventCustomer : xEventCustomers) {
            if (xEventCustomer.getStatus().getCode() == event.getType().getCode()) {
                xEventCustomer.exec(event);
                return;
            }
        }
    }
}

被觀察者:
public class XEvent extends Observable {
    private XEventDispatch xEventDispatch;
    //事件起源
    private X source;
    //事件的類型
    private PublicClassInfoStatusEnum type;

    //傳入事件的源頭,默認爲新建類型
    public SmallClassEvent(SmallClass smallClass, SmallClassEventDispatch smallClassEventDispatch) {
        this(smallClass, smallClassEventDispatch, PublicClassInfoStatusEnum.CREATE);
    }

    //事件源頭以及事件類型
    public XEvent(X p, XEventDispatch xEventDispatch, StatusEnum type) {
        this.xeventDispatch = xEventDispatch;
        this.source = p;
        this.type = type;
        //事件觸發
        this.notifyEventDispatch();
    }

    //通知事件處理中心
    private void notifyEventDispatch() {
        super.addObserver(xEventDispatch);
        super.setChanged();
        super.notifyObservers(source);
    }
}


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