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

Cyf*_*r13 3 c# asp.net singleton design-patterns facade

我正在开发一个项目,其中一个联合开发人员(和以前的开发人员)使用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<string> Method2(string value1, int value2)
    {
     // DO SOMETHING ELSE
     // RETURN LIST
    }
Run Code Online (Sandbox Code Playgroud)

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

所以我的问题是这是否真的有益处.开发人员可以解释的最好的是,它更好地用于内存管理,因为您不是经常创建和处理对象.

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

谢谢你的帮助.我是一名开发人员,他喜欢知道为什么要让自己成为更好的开发人员.因为我无法从开发人员那里得到有意义的文字,所以我会联系你们.

谢谢,乍得

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

Wik*_*hla 6

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

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