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