Рассмотрим определенные виды объектов, задействованных в доменно-ориентированном проектировании (DDD): сущности, объекты-значения, события домена и доменные службы.
Какие из них считаются объектами домена? И есть ли другие названия для абстракций, которые инкапсулируют их подмножество?
Я могу определить различные абстракции, которые полезно иметь при разговоре о DDD или моделях предметной области:
Сущности и объекты-значения. Я часто упоминаю "Сущности или объекты-значения". В частности, это те, которые моделируют состояние домена. Напротив, доменные службы не имеют состояния, и я бы сказал, что события домена просто отражают информацию о том, как домен пришел в свое текущее состояние.
Сущности, объекты-значения и события домена. Все они могут содержать или представлять данные, тогда как доменные службы определяют только поведение.
Все объекты, распознаваемые моделью предметной области. Полезно иметь возможность говорить о частях модели предметной области в целом, а не о концепциях за ее пределами.
Интересно, что даже тег domain-object
в Stack Overflow имеет запутанное определение:
Объекты предметной области — это объекты, созданные для работы с логикой предметной области на уровне модели. Эти объекты обычно имитируют реальные (или виртуальные) предметы из реальной жизни: человека, почту, документ и т. д.
Первоначальное определение, ориентированное на «работу с логикой предметной области», склоняется ко «всем объектам, распознаваемым моделью предметной области». Затем примеры склоняются к «Сущностям и объектам-значениям».
DDD забивает четко определенный, недвусмысленный вездесущий язык, и не без оснований. Разве это не должно подавать пример? :)