Так что это продолжение предыдущего вопроса, который я задал: Попытка выяснить, дает ли этот код какую-либо выгоду, используя Singleton
В двух словах, я имеюунаследовал плохо спроектированную программу, которая использует псевдо-фасадный класс и помещает его в Singelton.Каждый вызов метода проходит через Синглтон, который затем вызывает разные методы.
Singelton выглядит следующим образом:
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 int Method2(int value1, int value2)
{
return externalMethod(value1, value2)
}
}
Так что в приведенном выше примере возникнет проблема безопасности, если внешний метод, вызываемый в Method2, вызовет ошибку?
Например:
public int externalMethod(value1, value2)
{
try
{
return value1/value2;
}
catch
{
throw;
}
}
Должен ли я беспокоиться о том, что синглтон может отображать сгенерированную ошибку не для того пользователя?
Когда у меня есть возможность рефакторингаЯ избавляюсь от Singleton, но пока я просто не хочу случайно добавить огромную дыру в безопасности, добавив лучшую обработку исключений.
-Chad