Size: a a a

Software Design/Architecture/Zen

2021 November 15

AV

Alexey Vetrov in Software Design/Architecture/Zen
Концептуально это один Value Object
источник

N

Nikita in Software Design/Architecture/Zen
а его всегда нужно так выделять?
источник

A

Alexander in Software Design/Architecture/Zen
Так ну если одна валюта, то смысла нет хранить код валюты
источник

AV

Alexey Vetrov in Software Design/Architecture/Zen
Если вам это нужно. Это не правило как бы
источник

NT

Nikita Tolkachev in Software Design/Architecture/Zen
Ну явно не OrderItem отвечает за то, чтобы товар создавать
источник

ПГ

Павел Г. in Software Design/Architecture/Zen
Это пример из статьи по creator grasp. А кто по вашему мнению ?
источник

SP

Sergey Protko in Software Design/Architecture/Zen
https://www.sourcecodeexamples.net/2018/06/creator-grasp-pattern.html - можешь этот пример глянуть если хочешь. там чуть проще сделано и order отвечает только за создание order line а product specification приходит уже готовый
источник

ПГ

Павел Г. in Software Design/Architecture/Zen
Спасибо
источник

SP

Sergey Protko in Software Design/Architecture/Zen
там не товар - там тип снэпшета "сколько стоит товар на момент оформления заказа". И да не всегда это зона ответственности заказа, есть всякие резервации и т.д. это просто оч упрощенный пример
источник

SP

Sergey Protko in Software Design/Architecture/Zen
если у тебя есть данные которые имеют какой-то смысл только вместе и вместе описывают некие правила - то может быть весьма удобно завести под это дело VO.

еще whole value концепцию можно погуглить - ток сложнее гуглить такое. Чаще всего в разрезе functional core imperative shell можно встретить
источник

ПГ

Павел Г. in Software Design/Architecture/Zen
Ну пример в принципе такой же. Просто где грань, что SalesLineItem должен создаваться внутри Sale, а вот ProductSpecification снаружи SalesLineItem ?
источник

SP

Sergey Protko in Software Design/Architecture/Zen
там критерии есть в статье
источник

ПГ

Павел Г. in Software Design/Architecture/Zen
Один или несколько критериев. Один из которых "Тесно использует".
источник

SP

Sergey Protko in Software Design/Architecture/Zen
> From the above class diagram, The Sale class contains (in fact, aggregates) many SalesLineltem objects, the Creator pattern suggests that Sale class is a good candidate to have the responsibility of creating SalesLineltem instances.
источник

SP

Sergey Protko in Software Design/Architecture/Zen
короч там нет прям жестких правил, ты смотришь на отношения между объектами, насколько тестно штуки связаны, пересекаются ли жизненные циклы этих сущностей (что мол order line без order существовать не особо может) и на основе этого тебе предлагается кандидат для фабрики.
источник

ПГ

Павел Г. in Software Design/Architecture/Zen
По паттерну понятно, что SalesLineltem должен создаваться внутри. Но почему ProductSpecification создается снаружи?
источник

SP

Sergey Protko in Software Design/Architecture/Zen
по сути product specification имеет смысл без order, судя по всему + взаимодействие с ним на уровне ордера не особо плотное
источник

ПГ

Павел Г. in Software Design/Architecture/Zen
Ну а если бы не имел, VOшка чисто для SalesLineltem?
источник

NT

Nikita Tolkachev in Software Design/Architecture/Zen
Вот в твоем первом примере
addOrderItem(int amount, String name, int price)
Откуда ты возьмешь name и price, если не из товара? Раз из товара, значит, он уже откуда-то к тебе пришел, ведь так?
источник

ПГ

Павел Г. in Software Design/Architecture/Zen
Так.
источник