实例化多个类可以读写的单个类的正确方法是什么?

时间:2019-10-27 23:37:27

标签: c#

我试图创建一个XML Manager类,我的任何其他类都可以访问该类以按需保存,加载或删除信息。由于此类的性质,在任何给定时间都应该只存在一个,并且任何类别都可以访问。

我已经研究了静态类和单例类之间的区别,但是,我不确定应该实现哪个还是应该实现它们。

到目前为止,我有一个标准的课程,我不确定从这里开始应该去哪里:

public class XMLManager
    {
        //List of items
        public ItemDatabase itemDB;

        //Save Function
        public void SaveItems()
        {
            //Create a new XML File
            XmlSerializer serializer = new XmlSerializer(typeof(ItemDatabase));
            FileStream stream = new FileStream(Application.dataPath + "/StreamingFiles/XML/item_data.xml", FileMode.Create);
            serializer.Serialize(stream, itemDB);
            stream.Close();
        }

        //Load Function
        public void LoadItems()
        {
            //Open an XML File
            if (File.Exists(Application.dataPath + "/StreamingFiles/XML/item_data.xml"))
            {
                XmlSerializer serializer = new XmlSerializer(typeof(ItemDatabase));
                FileStream stream = new FileStream(Application.dataPath + "/StreamingFiles/XML/item_data.xml", FileMode.Open);
                itemDB = serializer.Deserialize(stream) as ItemDatabase;
                stream.Close();
            }
            else
            {
                Debug.LogError("File not found!");
            }
        }

        //Delete Function
        public void DeleteItems()
        {
            //Delete an XML File
            File.Delete(Application.dataPath + "/StreamingFiles/XML/item_data.xml");
        }
    }

    [System.Serializable]
    public class ItemEntry
    {
        public string ItemName;
        public SaveMaterial material;
        public int Value;
    }

    [System.Serializable]
    public class ItemDatabase
    {
        [XmlArray("CombatEquipment")]
        public List<ItemEntry> list = new List<ItemEntry>();
    }

    public enum SaveMaterial
    {
        Wood,
        Copper,
        Iron,
        Steel,
        Obsidian
    }

仅作记录,我了解这可能不是解决此问题的最完美方法,但是,这是在我的用例中适用的方法。

1 个答案:

答案 0 :(得分:1)

取决于您想从该课程中得到什么。静态和单例都几乎完成相同的工作,只是有一点点差异。这里Difference between static class and singleton pattern?强调了主要区别。

除非您希望您的类实现类,并且希望保持简单,否则请选择静态。

以用于生成日志或处理文件的方法为例。

Debug.LogError("Some String");

File.Delete("FullPathToFile");

它们也是静态类。参见Debug ClassFile Class