Статические классы и интерфейс - C#
Формулировка задачи:
Добрый день!
Есть вспомогательный статический класс:
Внешний код использует его явно. Как избавиться от этой зависимости?
На ум приходит использование интерфейсов, но насколько я понимаю, статические классы и интерфейсы - вещи несовместимые.
Вышел из ситуации, создав обертку над статическим классом
Ну и соответственно использование:
В чем недостатки такого подхода? Кроме очевидного усложнения инфраструктуры классов.
public static class MyXmlSerializer
{
public static void Serialize()
{
//сигнатура и реализация методов в данном случае неважны
}
} public class SomeObjectManager
{
public static void Save()
{
MyXmlSerializer.Serialize();
}
} public interface ISerializer
{
void Serialize();
}
public class XmlSerializerWrapper : ISerializer
{
public void Serialize()
{
MyXmlSerializer.Serialize();
}
} public class SomeObjectManager
{
private ISerializer serializer;
public SomeObjectManager(ISerializer _serializer)
{
serializer = _serializer
}
public static void Save()
{
serializer.Serialize();
}
}Решение задачи: «Статические классы и интерфейс»
textual
Листинг программы
public class MyXmlSerializer : ISerializer
{
private static readonly Lazy<MyXmlSerializer> _instance = new Lazy<MyXmlSerializer>(() => new MyXmlSerializer());
public static MyXmlSerializer Instance => _instance.Value;
private MyXmlSerializer() { } // Закрытый конструктор
public static void Serialize()
{
}
}