ООП-пуристский вопрос
Может ли класс, являющийся моделью для данных предметной области, содержать в себе ссылку на логгер(log4net,log4j) и выводить данные в лог? :)
Вот представьте себе, есть у вас описание какой-нибудь хреновины, например карточка клиента. И эта карточка при попытках сделать с ней что-нибудь нехорошее, записывает это дело и отсылает "куда нужно" :)
Если бы это был Haskell, такого вопроса не возникло бы вообще, т.к. данные они и есть данные, а в лог без таскания за собой IO или unsafePerformIO и не запишешь ничего.
Вот представьте себе, есть у вас описание какой-нибудь хреновины, например карточка клиента. И эта карточка при попытках сделать с ней что-нибудь нехорошее, записывает это дело и отсылает "куда нужно" :)
Если бы это был Haskell, такого вопроса не возникло бы вообще, т.к. данные они и есть данные, а в лог без таскания за собой IO или unsafePerformIO и не запишешь ничего.
no subject
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
1) Синглтон
2) Ссылка на логгер
Дальше начинаются вопросы "как это всё оформить красиво". Т.е. дизайн.
Есть подозрение, что ты не описал задачу, которую решаешь.
Что тебя смущает?
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
no subject
Единственное что можно поправить - это сильно сложное описание статического поля для экземпляра логгера. Если представить, что кому-то в руки попал твой класс, а логгер он ещё не скачал, то придётся не только создавать заглушку на ILog, но и приделывать таинственный неймпспейс log4net.
К тому же неясно, зачем тут рефлекшн. Точнее ясно, но неясно как логгер оторвать от класса с наличием этого рефлекшена.