Alex_Wells
@Alex_Wells
PHP/Kotlin

Поширить переменную по классам?

Здравствуйте. Как можно адекватно и удобно использовать переменную главного класса по всему проекту? Эта переменная - ОРМ, и мне нужен доступ к ней почти в каждом классе. Некоторые классы вообще подгружены отдельно, не через главный класс. Придумал только метод с instance'ом, типа при запуске выдать классу инстанс, потом подгружать ДБ по типу MainClass.Instance.DB.Action, но запись очень длинная получается.

Есть варианты короче?
  • Вопрос задан
  • 174 просмотра
Решения вопроса 3
GavriKos
@GavriKos
Вариант первый - делать не синглтон, а просто статическую переменную именно для DB. Т.е. без instance.
Вариант второй - в каждом классе, который использует DB в конструкторе один раз сохранять в поле класса ссылку на MainClass.Instance.DB. Во всех случаях использования обращаться к этому полю.
Вариант третий - курить что такое DI и DI container и рефакторнуть все под это дело.
Ответ написан
ayazer
@ayazer
Sr. Software Engineer
для этого есть Dependency Injections. Раз тег c#, то можно посмотреть на какой-то Ninject/autofac

https://autofac.org/
www.ninject.org
Ответ написан
@d-stream
Готовые решения - не подаю, но...
Чем плохо держать некий MainStaticClassWithStaticApplicationParameters (где могут при старте заполнятся часто используемые данные) ?
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы