我正在开发一个项目,其中一位共同开发人员(和以前的开发人员)对类的几乎每个页面都使用 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
}
现在,我对命名约定有一些问题,事实上他们将 Singelton 与 Facade 放在同一个类中,而且 Facade 并不是真正的 Facade。 (但那是完全不同的对话)。
所以我的问题是这是否真的有好处。开发人员可以解释的最好的情况是,它更有利于内存管理,因为您不需要不断地创建和处置对象。
我们的应用程序不是企业级应用程序,我们不存在内存问题。每当网站速度缓慢时,实际上都是数据库而不是代码造成的。
感谢您的帮助。我是一名开发人员,喜欢知道为什么要让自己成为更好的开发人员。由于我无法从开发人员那里得到有意义的信息,所以我正在与你们联系。
谢谢,
乍得
UPDATED感谢下面的评论,我知道这个状态是一个严重的问题,因为它有可能成为一个巨大的安全缺陷。在内存管理、速度等方面,在单例中使用此代码有什么好处吗?或者每次需要时实例化 FooFacade 会更容易吗?
因为你的对象有一个内部状态(Status
)你是在自找麻烦。具体来说,如果在多个线程中(例如在 Web 应用程序中)使用单例,则代码可能无法工作。
仅当您的类没有内部状态时才使用单例。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)