我工作的一個項目中的合作開發(和以前的開發商)一個使用單例/門面只是關於上課的每一頁有任何好處它內部有很多方法調用,但實際上並不維護數據。試圖找出如果這個代碼創建通過使用一個Singleton
例如:
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同一類的門面和內部其實事實的某些問題,該門面是不是真的正面。 (但這是完全不同的談話)。
所以我的問題是,是否真的是從這個好處。開發人員可以解釋的最好方法是內存管理更好,因爲你不是經常創建和處理對象。
我們的應用程序是不是一個企業級應用程序,我們沒有與內存問題。任何時候這個網站都很慢,這實際上是由於數據庫而不是代碼。
感謝您的幫助。我是一位開發人員,他很想知道爲什麼要讓自己成爲更好的開發人員。由於我無法用語言從開發人員那裏得知它,所以我正在向你們伸出援助之手。
感謝, 乍得
修訂 由於下面的評論,我知道狀態是一個嚴重的問題,因爲它擁有的是一個巨大的安全漏洞的機會。在涉及內存管理,速度等方面,在Singleton中使用此代碼有什麼好處?或者,每當我需要它時,實例化FooFacade會更容易一些。
StringBuilder跳出來給我。這是你說班級沒有的共享狀態的一個例子,但它顯然確實如此。該屬性和'clearStatus'方法可能會帶來挑戰。 – 2012-01-09 18:48:08
因此,如果我聽到您的說法正確,那麼可能會將來自一位用戶的狀態消息顯示給其他用戶? – Cyfer13 2012-01-09 18:58:13
Plus添加到,清除,顯示;以上所有的混合和匹配。全球狀態很難。這聽起來像以前的開發人員發現了一個模式,並對此感到非常滿意。 – 2012-01-09 19:06:28