資料匯流排模式
框架可以通過傳送特定的資料 觸發特定的元件
一、核心的資料分發器
1.Member 代表訂閱的元件
2.subscribe:將所有的業務元件加入到了一個集合中
3.publish: 觸發事件,嘗試像所有訂閱的事件集合中出入該型別資料,由他們決定是否處理
*/
public class DataBus {
private static final DataBus INSTANCE = new DataBus();
private final Set<Member> listeners = new HashSet<>();
public static DataBus getInstance() {
return INSTANCE;
}
public void subscribe(final Member member) {
this.listeners.add(member);
}
public void unsubscribe(final Member member) {
this.listeners.remove(member);
}
public void publish(final DataType event) {
event.setDataBus(this);
for(Member m:listeners){
m.accepts(event);
}
}
}
資料型別
public class MessageData extends AbstractDataType {
private final String message;
public MessageData(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
public static DataType of(final String message) {
return new MessageData(message);
}
}
被觸發的模組
accept:代表這個模組處理什麼樣的資料 是否處理髮過來的訊息
public interface Member extends Consumer<DataType> {
void accept(DataType event);
}
這是一個成員的例子,當accept方法在DataBus中觸發時,這個模組會自己判斷是否是需要它處理的資料
如果是就會執行相應的功能--handleEvent
public class MessageCollectorMember implements Member {
private List<String> messages = new ArrayList<>();
@Override
public void accept(final DataType data) {
if (data instanceof MessageData) {
handleEvent((MessageData) data);
}
}
private void handleEvent(MessageData data) {
LOGGER.info(String.format("%s sees message %s", name, data.getMessage()));
messages.add(data.getMessage());
}
}
相關文章
- 大資料匯流排(DataHub)大資料
- 匯流排
- 事件匯流排EventBus和觀察者模式事件模式
- 事件匯流排事件
- 前端匯流排前端
- 如何通過波形解析can匯流排資料
- 事件匯流排demo事件
- javascript事件匯流排JavaScript事件
- 將Abp預設事件匯流排改造為分散式事件匯流排事件分散式
- Vue事件匯流排(EventBus)Vue事件
- Vue 事件中央匯流排Vue事件
- ARM 匯流排協議協議
- AHB匯流排協議協議
- AXI匯流排簡介
- Can匯流排介紹
- 計算匯流排頻寬
- I2C 匯流排
- CAN匯流排原理_學習
- 序列匯流排的學習
- CPU主頻,倍頻,外頻,系統匯流排頻率,前端匯流排頻率前端
- CAN(FD)、LIN匯流排通訊和資料庫設計工具-VDE資料庫
- Flutter中的事件匯流排(EventBus)Flutter事件
- SOFA 原始碼分析— 事件匯流排原始碼事件
- Otto事件匯流排框架的使用事件框架
- 伺服器匯流排技術伺服器
- 企業服務匯流排ESB
- 非父子元件之間傳值(Bus/匯流排/釋出訂閱模式/觀察者模式)元件模式
- 手寫訊息匯流排LiveDataBusLiveData
- SpringCloud(六)Bus訊息匯流排SpringGCCloud
- 自己動手寫事件匯流排(EventBus)事件
- MACH SYSTEMS—匯流排介面轉換工具Mac
- 事件匯流排有個 pipe 管道方法事件
- I2S音訊匯流排音訊
- Otto - 安卓平臺上事件匯流排安卓事件
- LLM-kimi:BMS-CAN匯流排
- 比 EventBus 更高效的事件匯流排(BusUtils)事件
- Flutter基礎-036-事件匯流排EventBusFlutter事件
- CAN匯流排協議 學習筆記協議筆記