Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
в то время как две сущности отличаются друг от друга даже в случае если их свойства полностью совпадают.
SurrogateId, применяемая к классу.На самом деле
Value Object-ы могут содержать логику
Но можно привести пример POCO с логикой, чтоб он не нарушал SRP, и не был VO?
Component или Entity, навязанного инфраструктурой. Value Object и Entity — это термины из области моделирования (например, DDD), и они означают разделение объектов в модели на имеющие свою идентичность (сущности), и не имеющие таковой (объекты-значения).методы по добавлению товаров в БД
отправки их по сети
получения связанных сущностей типа всех покупателей
более отражает суть и поведение объекта — простой и без наследования.
Value Object — иммутабельные объектыЭто верно.
Они как бы строительные кирпичики для EntityЭто тоже верно.
Никакой логики в них быть не должноВот это уже неверно. Value Object-ы вполне себе могут содержать логику. Более того, Эванс и ко рекомендуют помещать доменную логику именно в Value Object-ы там где это возможно, т.к. работать с ними проще из-за их неизменяемости. Хороший пример Value Object-а — DateTime в .NET. Неизменямый тип данных с большим количеством логики внутри.
POCO (POJO, PODS) — это принцип организации данныхPOCO — это в первую очередь принцип, который говорит о том, что при моделировании предметной области следует использовать настолько простые классы, насколько возможно. Это понятие никак не связано с DTO (кроме того, что DTO тоже не следует наследовать от тяжеловесных компонент).
struct Point {
public int X;
public int Y;
}
DTO vs POCO vs Value Object