代码之家  ›  专栏  ›  技术社区  ›  André Soares

为特定设置创建类是好的做法吗?

  •  1
  • André Soares  · 技术社区  · 10 年前

    我有一个正在编写的Windows窗体应用程序。

    现在,这个应用程序将通过TextBox等与用户交互。

    我设计了4个类来保存所有需要的设置(这将是DirectorySettings、LoopSettings、AttackSettings和AutoPotSettings),这将用于保存文本框中的值等。

    我让它们都可以连载。

    我的计划是保存这些类,以便以后恢复它们并加载它们上定义的设置,这样它们就可以在各种应用程序会话中保持。

    我的问题是,这是一种好的做法,还是有其他方法可以做到这一点?

    这些设置值将在运行时多次使用,我希望我的用户能够将它们保存到以后的会话中。

    编辑:这个问题是在我读到《房地产》时提出的。Settings可保存设置。我不确定是否应该使用该特性,或者是否应该使用自己的类来保存这些特性。

    2 回复  |  直到 10 年前
        1
  •  1
  •   DaveTheRave    10 年前

    有道理。也许可以创建一个userprofile类,其中包含所有与游戏状态相关的用户信息。然后序列化该对象。你可以绑定到一个用户代码,这样当他们登录时,他们会得到所有与状态相关的信息

    它允许人们拥有多个用户/游戏等,而不是一个州

        2
  •  1
  •   Abhinav Galodha    10 年前

    在类设计方面,您可以使用接口/抽象类来定义保存/读取行为,如 IGame状态 下面提到的接口。它有两种方法a) 保存状态 b) 读取状态 用于保存和读取状态。

    然后您的类DirectorySettings、LoopSettings、AttackSettings、AutoPotSettings可以实现该接口。在您的主程序中,您可以定义一个抽象,如下面main方法中突出显示的那样,以便将main程序代码与设置列表分离。

    如果您有很多设置并且需要更多的控制,这种方法应该有助于轻松扩展系统。

     class Program
        {
            static void Main(string[] args)
            {
                List<IGameState> lstSaveState = new List<IGameState>();
                // For Saving State
                lstSaveState.ForEach(x=>x.SaveState());
    
            // For Reading State
            lstSaveState.ForEach(x => x.ReadState());
        }
    
    }
    
    public interface IGameState
    {
        void SaveState();
    
        IGameState ReadState();
    }
    
    
    public class DirectorySettings : IGameState
    {
        public void SaveState()
        {
            // Serialize
        }
    
        public IGameState ReadState()
        {
            // Deserialize
            throw NotImplementedException();
        }
    }
    
    public class LoopSettings : IGameState
    {
        public void SaveState()
        {
            // Serialize
        }
    
        public IGameState ReadState()
        {
            // Deserialize
            throw NotImplementedException();
        }
    }
    
    推荐文章