C# 最佳实践-不同的程序模式/使用变量以编程方式决定窗体如何创建
在我最近的一个项目中,我已经达到了一个很好的阶段,在那里有相当多的工作要做,但是没有什么是不容易改变/修改的。现在我被要求添加..如何描述..例如,我的程序的不同“模式”C# 最佳实践-不同的程序模式/使用变量以编程方式决定窗体如何创建,c#,winforms,class,C#,Winforms,Class,在我最近的一个项目中,我已经达到了一个很好的阶段,在那里有相当多的工作要做,但是没有什么是不容易改变/修改的。现在我被要求添加..如何描述..例如,我的程序的不同“模式” 一种地图视图模式,在该模式下,程序更多地是一种图形显示,所有内容都基于绘制在地图/其他显示上的方式工作 一种数据网格模式,程序更多地基于文本等 我可以将这些信息存储在一个变量中,例如,甚至是一个包含“map”或“datagrid”的字符串,程序基于此或枚举创建gui/其进程,尽管这意味着我需要更多地移动东西 public
- 一种地图视图模式,在该模式下,程序更多地是一种图形显示,所有内容都基于绘制在地图/其他显示上的方式工作
- 一种数据网格模式,程序更多地基于文本等
public string mode;
// then use dropdowntools to set this to "map" or "datagrid"
public enum mode
{
map,
datagrid
};
// again use dropdowntools
我是否最好将UI编码/表单的主要部分移动到两个单独的类中,一个用于map,一个用于datagrid,并根据用户选择以及不可避免的设置变量,根据需要创建这些类
我在大多数应用程序中都看到过这种情况,用户可以更改这些选项,但从来没有见过编写这种选项的最佳实践
目前我已经考虑过这样做
public void pollDevices()
{
if (mode == "Map")
{
timer = new System.Timers.Timer(500);
for (int i = 0; i <= mDevices.Count - 1; i++)
{
IDeviceInterface deviceToPoll = mDevices[i];
timer.Elapsed += delegate { deviceToPoll.connect(deviceToPoll, this, exit); };
}
timer.Enabled = true;
}
else if (mode == "Datagrid")
{
}
}
如果有人对他们将如何着手做这类事情有任何意见,那将是一个很大的帮助。如果你需要我提供更多的信息,尽管问
我懂了。所以我应该创建一个接口来保存方法的模板等等,然后基本上遵循我的一个原始想法,为每个视图创建一个类,从接口继承?没错-关键是要分离显示数据和检索数据的关注点。
public void pollDevices()
{
if (mode == "Map")
{
//call method in map class that does this stuff.
}
else if (mode == "Datagrid")
{
//call method in datagrid class that does this stuff
}
}