如何在WPF中使用Factory Pattern

时间:2012-05-28 19:33:46

标签: c# wpf factory-pattern

我陷入了可以拥有许多游戏画面的场景,我希望能够使用单选按钮或组合框选择游戏画面。 但问题是实施它的最佳方法?

我应该将复选框或组合框选择的字符串传递给Factory,还是应该使用枚举?如果Enum是我的方式,我该如何使用它?一个简单的例子就是非常感谢。

1 个答案:

答案 0 :(得分:2)

我喜欢在这种情况下使用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));