我有以下應用程序與自定義設備的接口。該應用程序用於對設備進行編程。在c中存儲設置的設計模式#
我的應用程序可以讀取設備的設置並將設置編程到設備。所以這意味着兩組設置;一組設置當前在設備中,另一組由用戶通過應用程序輸入。
有不同的設備類型,都有一些共同的設置和一些設備特定的設置。
我正在考慮兩個類,都有一套完整的設置。都使用單身人士,所以我可以輕鬆地訪問我整個項目的所有設置。但是這種感覺不對,在這種情況下的任何提示
我有以下應用程序與自定義設備的接口。該應用程序用於對設備進行編程。在c中存儲設置的設計模式#
我的應用程序可以讀取設備的設置並將設置編程到設備。所以這意味着兩組設置;一組設置當前在設備中,另一組由用戶通過應用程序輸入。
有不同的設備類型,都有一些共同的設置和一些設備特定的設置。
我正在考慮兩個類,都有一套完整的設置。都使用單身人士,所以我可以輕鬆地訪問我整個項目的所有設置。但是這種感覺不對,在這種情況下的任何提示
看看Command pattern。您可以將設置封裝在配置對象中,並將其用作控制器類的輸入。在控制器類配置了正確的參數後,您可以調用它的execute
方法來處理數據。
也可以與State pattern加入這個或Strategy pattern切換處理算法(例如,在一個狀態中的處理可以包括將數據發送給設備,而在另一個從所述設備接收的話)。
不是設計模式,但我可能做到這一點:
// represents a device with it's settings
public class Device
{
public string Type { get; set;}
public List<Setting> Settings { get; set; }
}
// represents a setting, agnostic of which device it applies to
public class Setting
{
public string Setting { get; set; }
public string Value { get; set; }
}
// represents mapping which devices has which settings
public class DeviceSettings
{
public List<string> ApplicableDevices { get; set; }
public List<Settings> ApplicableSettings { get; set; }
}
不要專注於使用的集合類型。我想你會有更多的屬性。
使用此設計,您可以在運行時定義設置並將它們分配給特定設備。
我可能做到這一點(我的C#是有點生疏了,所以不要指望語法是正確的):
class Settings
{
Settings parent = null;
Map<String, String> settings;
String getSetting(String setting)
{
if (settings.contains(setting))
return settings.get(setting);
else if (parent != null)
return parent.getSetting(setting);
else return null;
}
}
那麼常用的設置是每個設備的家長和通用設置沒有父母。
如何訪問/創建這些類將取決於項目的結構。包含一組這些類的單身人士(可能在地圖(Map<String, Setting>
))是一個想法。
以這種方式做事的好處是,子設置也可以選擇性地覆蓋它的父級設置。
單身人士會很好 – MMK
也許這是我,但問題是有點不清楚。 「有不同的設備類型......」 - 這使得它聽起來像你想要超過2班......或者你可以在任何時間只有1種設備類型? ...或者是設備類型的設置之一? – Dukeling
我可以說,4個不同的設備,我應該能夠使用此工具進行編程。他們擁有75%的共同設置,其中25%的設置對設備來說是唯一的。如果連接了設備,則讀取設置,並且如果用戶輸入設置,則應該在按鈕點擊之後存儲和編程設置。我正在尋找最好的方式來存儲這些設置,以適應不同的設備類型,並在設備中編程並由用戶輸入。 – 2pietjuh2