我被困在一个可以有很多游戏屏幕的场景中,我希望能够使用单选按钮或组合框来选择游戏屏幕。但问题是最好的实现方式是什么?
我应该将复选框或组合框选择的字符串传递给工厂,还是应该使用枚举?如果枚举是要走的路,我该如何使用它?一个简单的例子会很好谢谢。
我被困在一个可以有很多游戏屏幕的场景中,我希望能够使用单选按钮或组合框来选择游戏屏幕。但问题是最好的实现方式是什么?
我应该将复选框或组合框选择的字符串传递给工厂,还是应该使用枚举?如果枚举是要走的路,我该如何使用它?一个简单的例子会很好谢谢。
在这种情况下,我喜欢使用 Enums 而不是魔法字符串,因为它可以防止由拼写错误引起的问题,并使这些选项可用于智能感知。
namespace TheGame
{
// declare enum with all available themes
public enum EnumGameTheme { theme1, theme2 };
// factory class
public class ThemeFactory
{
// factory method. should create a theme object with the type of the enum value themeToCreate
public static GameTheme GetTheme(EnumGameTheme themeToCreate)
{
throw new NotImplementedException();
// TODO return theme
}
}
// TODO game theme class
public class GameTheme { }
}
给定在(比如说) lstThemes中选择的主题调用工厂的代码:
// get the enum type from a string (selected item in the combo box)
TheGame.EnumGameTheme selectedTheme = Enum.Parse(typeof(TheGame.EnumGameTheme), (string)lstThemes.SelectedValue);
// invoke the factory method
TheGame.GameTheme newTheme = TheGame.ThemeFactory.GetTheme(selectedTheme);
将可用主题作为字符串获取的代码:
// get a string array of all the game themes in the Enum (use this to populate the drop-down list)
string[] themeNames = Enum.GetNames(typeof(TheGame.EnumGameTheme));