metaclass: (Default)
[personal profile] metaclass
Может ли класс, являющийся моделью для данных предметной области, содержать в себе ссылку на логгер(log4net,log4j) и выводить данные в лог? :)

Вот представьте себе, есть у вас описание какой-нибудь хреновины, например карточка клиента. И эта карточка при попытках сделать с ней что-нибудь нехорошее, записывает это дело и отсылает "куда нужно" :)

Если бы это был Haskell, такого вопроса не возникло бы вообще, т.к. данные они и есть данные, а в лог без таскания за собой IO или unsafePerformIO и не запишешь ничего.

Date: 2009-07-26 09:47 am (UTC)
From: [identity profile] metaclass.livejournal.com
Агаа. У меня на самом деле так и сделано - данные живут в одном классе и есть еще один класс, который их грузит/сохраняет в БД. Если убрать из класса данных вообще любое поведение, в т.ч. и любые проверки валидности данных, то логгер там тоже становится не нужен, и переселяется в классы-адаптеры БД, гуи, веб-сервисов и прочего, что нам там надо.

Date: 2009-07-26 09:48 am (UTC)
From: [identity profile] zamotivator.livejournal.com
Ну там оно и получается.
Функциональная парадигма всё-таки разделяет данные и поведение.
Потому нужно сосредоточиться на описании "классов" - т.е. поведения, а данные просто plain - болтаются сбоку.
Инкапсуляция достигается суть замыканием состояния в обработчике....
Всё верно ведь?

Date: 2009-07-26 09:54 am (UTC)
From: [identity profile] metaclass.livejournal.com
Да, вроде все так и получается.

Date: 2009-07-26 09:54 am (UTC)
From: [identity profile] zamotivator.livejournal.com
Кстати, этот подход к дизайну отлично описан в SICP.

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 28th, 2025 06:07 am
Powered by Dreamwidth Studios