Я читав про дизайн, керований доменом майже два роки, і обережно вводив деякі поняття в свою щоденну роботу або принаймні створював плани того, як все, що я роблю регулярно, можна робити в рамках дизайну, керованого доменом.
Один висновок, до якого я почав звертатися, особливо у відповідь на читання детальніше про розбиття відповідальності за запити подій та відповідальність за запити команд (CQRS) про те, що, можливо, об'єкти домену призначені для використання лише для запису. Для того, щоб бути більш зрозумілим, здається, що те, що люди тонко пропонують у більшій частині документації, яку я читав, що об'єкти домену відповідають за виконання операцій / обчислень, допущення, орієнтованих на домен, і тоді вони є головним чином, щоб забезпечити шлях до стійкості через інфраструктура, що надається в рамках реалізації репозиторію. Хоча мені подобається те, що це, можливо, значно спрощує доменну модель, оскільки це виключає відповідальність за викриття стану.
Якщо це дійсно правильно, що доменні об’єкти в основному використовуються як об'єкти лише для запису, то це викликає у мене питання, на які я сподіваюся, що хтось міг би відповісти.
- Як можна виконувати одиничні тести на об'єкті, який має сеттери або методи, що змінюють стан об'єкта, але не надають зовнішнього загальнодоступного інтерфейсу для зчитування стану з таких, як одержувачі властивостей у C #? Чи добре піддавати стан виключно для того, щоб зробити цей об'єкт перевіряючим?
- Як можна показувати користувачеві результати обчислень або операцій, виконаних у домені, без необхідності їх зберігати, а потім витягувати результати з зберігання магазину поза контекстом домену? Чи добре піддавати стан виключно з метою показу результатів.
Чи є головним правилом, що єдиними особами, які отримують властивості (отримати доступ до них), повинні бути лише ті, які також можна записати у домені? Або сказати по-іншому, чи слід уникати властивостей лише для читання, оскільки вони існують лише для цілей читання і, отже, не грають необхідної ролі у фактичній моделі домену?
Схожі матеріали: