Статические классы и интерфейс - 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() { } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д