试图通过使用Singleton来确定此代码是否会带来任何好处

我正在开发一个项目,其中一个联合开发人员(以及之前的开发人员)使用Singleton / Facade几乎每个页面的内部都有很多方法调用,但实际上并没有维护数据。

例如:

public class FooFacade { private static FooFacade m_facade = null; private static DataAccessManager m_dataAccessMgr = null; public StringBuilder Status {get; set; } private FooFacade() { this.Status = new StringBuilder(); } public static FooFacade getInstance() { if (m_facade == null) { m_dataAccessMgr = DataAccessManager.getInstance(); m_facade = new FooFacade(); } return m_facade; } public void clearStatus() { this.Status.Remove(0, Status.Length); } public void Method1(string value1, int value2) { // DO SOMETHING } public List Method2(string value1, int value2) { // DO SOMETHING ELSE // RETURN LIST } 

现在,我对命名约定存在一些问题,并且他们将Singelton与Facade在同一个类中,并且Facade不是真正的Facade。 (但这是一个完全不同的对话)。

所以我的问题是这是否确实有益处。 开发人员可以解释的最好的是,它更适合内存管理,因为您不是经常创建和处理对象。

我们的应用程序不是企业级应用程序,我们没有内存问题。 任何时候网站都很慢,这真的是由于数据库而不是代码。

谢谢你的帮助。 我是一名开发人员,他喜欢知道为什么要让自己成为更好的开发人员。 由于我无法从开发人员那里得到有意义的文字,我正在向你们伸出援助之手。

谢谢,乍得

更新感谢下面的评论,我知道状态是一个严重的问题,因为它有可能成为一个巨大的安全漏洞。 在内存管理,速度等方面,在Singleton中使用此代码有什么好处? 或者每次我需要时实例化FooFacade会更容易。

因为您的对象具有内部状态( Status ),所以您会遇到麻烦。 具体来说,如果从多个线程中使用单例(例如在Web应用程序中),代码可能就不会起作用。

只有在没有内部状态的类时才使用单例。

在内存管理,速度等方面,在Singleton中使用此代码有什么好处? 或者每次我需要时实例化FooFacade会更容易。

此类型的所有实例都包含对StringBuilder的引用。 此外,创建新实例时没有繁重的工作(除非DataAccessManager.getInstance()在幕后做了一些令人讨厌的事情)。 所以不,在内存管理,速度等方面没有任何实际好处。我只需要在需要时实例化一个新实例。 (或者更确切地说:我会试图完全摆脱这个课程……)

我会为必须作为单例存在的事物保存单例模式,例如在多个使用者之间共享的特定文件。 单身人士通常涉及隔离线程问题。 但是,如果您有一个不包含任何状态的类并且使用单例模式实现,那么您已经实现了一个很容易成为反模式的实用程序类。 虽然不是一个好主意,但是使用静态方法的静态类本身会更高效。 静态方法在调用方法之前不需要进行空检查。 但正如我在开始时所说的那样,将单身模式留给必须是单身的东西。