Size: a a a

Software Design/Architecture/Zen

2020 December 27

VA

Vladimir Alexeev in Software Design/Architecture/Zen
А внутри Phone какой-нибудь TCP клиент с пулом соединений, кешированием и параметрами из конфигурационного файла
источник

AL

Aleksander L in Software Design/Architecture/Zen
Vladimir Alexeev
Да. Только вот, как отметили выше, для создания сущности User будет нужна зависимость Phone
Почему же это зависимость? Это предметная область, что у пользователя есть телефон
источник

VA

Vladimir Alexeev in Software Design/Architecture/Zen
Aleksander L
Почему же это зависимость? Это предметная область, что у пользователя есть телефон
Я имею в виду реализацию Phone
источник

AL

Aleksander L in Software Design/Architecture/Zen
Vladimir Alexeev
А внутри Phone какой-нибудь TCP клиент с пулом соединений, кешированием и параметрами из конфигурационного файла
Как это относится к телефону пользователя?
источник

a

atcq (Алексей)... in Software Design/Architecture/Zen
Vladimir Alexeev
Я имею в виду реализацию Phone
пользователю принадлежит номер телефона
источник

VA

Vladimir Alexeev in Software Design/Architecture/Zen
Aleksander L
Как это относится к телефону пользователя?
Я сейчас говорю не про номер, а про клиент, отправляющий смс
источник

AL

Aleksander L in Software Design/Architecture/Zen
Vladimir Alexeev
Я сейчас говорю не про номер, а про клиент, отправляющий смс
Клиент не принадлежит пользователю
источник

ЕР

Евгений Ромашкан... in Software Design/Architecture/Zen
Aleksander L
Клиент не принадлежит пользователю
+
источник

VA

Vladimir Alexeev in Software Design/Architecture/Zen
Тогда, выходит, либо
client.send(user.getPhone()), либо
user.send(client)?
источник

VA

Vladimir Alexeev in Software Design/Architecture/Zen
Второй реализуется как:
send(client) {
client.send(this.phone, this.smsOptions)
}
источник

AL

Aleksander L in Software Design/Architecture/Zen
Vladimir Alexeev
Тогда, выходит, либо
client.send(user.getPhone()), либо
user.send(client)?
Ну да.
источник

ЕР

Евгений Ромашкан... in Software Design/Architecture/Zen
Vladimir Alexeev
Тогда, выходит, либо
client.send(user.getPhone()), либо
user.send(client)?
источник

YG

Yury Golikov in Software Design/Architecture/Zen
Vladimir Alexeev
А внутри Phone какой-нибудь TCP клиент с пулом соединений, кешированием и параметрами из конфигурационного файла
Мне кажется тут какая то дичь. Суть rich, чтобы в одном месте лежал стейт и функции, которые гарантируют какие то правила внутри. Но это не значит, что нужно помещать все туда, если кому то требуются какие данные из нее.
источник

EE

Evgenii Evgenivich in Software Design/Architecture/Zen
Yury Golikov
Мне кажется тут какая то дичь. Суть rich, чтобы в одном месте лежал стейт и функции, которые гарантируют какие то правила внутри. Но это не значит, что нужно помещать все туда, если кому то требуются какие данные из нее.
+
источник

AK

Aleh Kashnikau in Software Design/Architecture/Zen
Yury Golikov
Мне кажется тут какая то дичь. Суть rich, чтобы в одном месте лежал стейт и функции, которые гарантируют какие то правила внутри. Но это не значит, что нужно помещать все туда, если кому то требуются какие данные из нее.
плюсую, идея rich model кмк в том, чтобы иметь данные и методы для их изменения рядом, а не все вообще методы.
Отправка смски не меняет данные контактов, отправка скорее всего будет делаться через какого-то вендора, возможно через разных, сходу не могу придумать причины, когда это было бы удобно положить рядом с кодом хранения телефона для пользователя или для контактов чего угодно в целом
источник

EK

Evgeniy Kuvshinov in Software Design/Architecture/Zen
но может потребоваться сделать запись в историю отправленных смс... (а это уже внутренний стейт)
и как тогда правильно ?
источник

ЕР

Евгений Ромашкан... in Software Design/Architecture/Zen
Evgeniy Kuvshinov
но может потребоваться сделать запись в историю отправленных смс... (а это уже внутренний стейт)
и как тогда правильно ?
user.sendSms(sender, sms)
источник

EK

Evgeniy Kuvshinov in Software Design/Architecture/Zen
Евгений Ромашкан
user.sendSms(sender, sms)
да я об этом и говорю теперь отправка смс это уже часть модели
а раньше она не меняла стейт и могла быть
sender.sendSms(user, sms)
источник

ЕР

Евгений Ромашкан... in Software Design/Architecture/Zen
Или писать историю в хэндлере доменных ивентов
источник

ЕР

Евгений Ромашкан... in Software Design/Architecture/Zen
Evgeniy Kuvshinov
да я об этом и говорю теперь отправка смс это уже часть модели
а раньше она не меняла стейт и могла быть
sender.sendSms(user, sms)
Ну меняет и меняет
источник