История изменений
Исправление Manhunt, (текущая версия) :
Мне просто нужен простой лог который умеет переключаться между выводом в файл и в терминал. Накой черт мне твой огород городить?
Я ж говорю, что с решение с логгером-синглтоном — спорное, а не непригодное.
Мне в каждом модуле предлагаешь считывать/парсить/кэшировать/автоматически бекапить настройки программы?
Модуль должен получать предназначенные для него настройки в готовом виде. Парсить/кэшировать/бэкапить — не его компетенция.
Или в каждый класс передавать экземпляр объекта Settings?
Да. В конструктор и (если надо) в OnSettingsChanged().
И еще, есть вот у меня БД с кэшем в RAM. Кэш для клиентов общий и единственно существующий - почему мне не вытащить его в Singleton?
Потому что каждый клиент должен работать со своим торчком от «бд». Тот факт, что торчок под капотом проверяет общий RAM-кэш и лезет в общую БД --- лежит вне компетенции клиентов. Сегодня логика кэширования и работы с БД одна, а завтра по каким-то причинам может стать совсем другая. Может быть принято решение разным клиентам разный объем RAM каким-то образом предоставлять, разное время жизни кэшированных объектов в RAM сделать, и тому подобное. Чем меньше клиенты обо всей этой кухне знают, тем легче будет внести изменения.
Исправление Manhunt, :
Мне просто нужен простой лог который умеет переключаться между выводом в файл и в терминал. Накой черт мне твой огород городить?
Я ж говорю, что с решение с логгером-синглтоном — спорное, а не непригодное.
Мне в каждом модуле предлагаешь считывать/парсить/кэшировать/автоматически бекапить настройки программы?
Модуль должен получать предназначенные для него настройки в готовом виде. Парсить/кэшировать/бэкапить — не его компетенция.
Или в каждый класс передавать экземпляр объекта Settings?
Да. В конструктор и (если надо) в OnSettingsChanged().
И еще, есть вот у меня БД с кэшем в RAM. Кэш для клиентов общий и единственно существующий - почему мне не вытащить его в Singleton?
Потому что каждый клиент должен работать со своим торчком от «бд». Тот факт, что торчок под капотом проверяет общий RAM-кэш и лезет в общую БД --- лежит вне компетенции клиентов. Сегодня логика кэширования и работы с БД одна, а завтра по каким-то причинам может стать совсем другая. Может быть принято решение разным клиентам разный объем RAM каким-то образом предоставлять, разно время жизни кэшированных объектов в RAM сделать, и тому подобное. Чем меньше клиенты обо всей этой кухне знают, тем легче будет внести изменения.
Исходная версия Manhunt, :
Мне просто нужен простой лог который умеет переключаться между выводом в файл и в терминал. Накой черт мне твой огород городить?
Я ж говорю, что с решение с логгером-синглтоном — спорное, а не непригодное.
Мне в каждом модуле предлагаешь считывать/парсить/кэшировать/автоматически бекапить настройки программы?
Модуль должен получать предназначенные для него настройки в готовом виде. Парчить/кэшировать/бэкапить — не его компетенция.
Или в каждый класс передавать экземпляр объекта Settings?
Да. В конструктор и (если надо) в OnSettingsChanged().
И еще, есть вот у меня БД с кэшем в RAM. Кэш для клиентов общий и единственно существующий - почему мне не вытащить его в Singleton?
Потому что каждый клиент должен работать со своим торчком от «бд». Тот факт, что торчок под капотом проверяет общий RAM-кэш и лезет в общую БД --- лежит вне компетенции клиентов. Сегодня логика кэширования и работы с БД одна, а завтра по каким-то причинам может стать совсем другая. Может быть принято решение разным клиентам разный объем RAM каким-то образом предоставлять, разно время жизни кэшированных объектов в RAM сделать, и тому подобное. Чем меньше клиенты обо всей этой кухне знают, тем легче будет внести изменения.