我遇到了一個小小的設計困境。這實際上不是一個「問題」,它只是困擾我,我無法找到一個更清潔的解決方案:)我希望你們中的一些人可能有一些好的想法或替代解決方案。簡單的財產製度
假設我有一些數據可以通過通信通道(串行/ IP,e.t.c)在任何時間不同步。單個數據塊很小,例如整數或浮點數。它們涉及發送數據的機器的某些狀態。我不想設計一個簡單的「財產」系統,在收到單個數據項時,或在收到MULTIPLE數據項時提醒我。例如,當我成功收集兩個整數和一個浮點數時,會給我一個警報。
比方說遠程系統可以在此給我:
DATA1 : float
DATA2 : int
DATA3 : int
DATA4 : double
DATA5 : short
現在,在僞代碼,我想要做的就是這樣的事情(使用宏或其他)
PROPERTY(DATA1)
PROPERTY(DATA2, DATA3)
PROPERTY(DATA4)
也就是說,每個屬性都會監視可變數量的數據塊,並在所有正在監視的塊已更改/已填滿時向我發送SINGLE警報。
目前我正在使用sigC++,我認爲它是一個輝煌的回調庫。我有一個工作實現,但編寫起來很麻煩,因爲C++並不真正支持可變參數列表,所以我迄今爲止所做的工作就是擁有一個類PROPERTY,它有一個數字的重載構造函數,支持1到X個參數,這不是真正的「動態」。如果我需要更多的變量監視,我需要確保有一個構造函數來處理參數的數量。
也許這只是我嘗試過設計:)
可以通過定義幫助類來創建構建時間,幫助類將收集參數(對某些集合)並將其傳遞給屬性。像'Property p(PropList()。addInt(xI).addFloat(xF))'。 (在C++ 03中,也就是說,C++ 11中的初始化程序列表更容易)。 –
不錯,這個解決方案看起來很乾淨!易於編寫,易於擴展。謝謝! – Daniel