Конструкторы DDD + Public без параметров - должны ли они существовать? - PullRequest
5 голосов
/ 21 ноября 2008

Один из арендаторов DDD - запретить вашим объектам входить в недопустимое состояние. Для меня это означает, что не должно быть открытого конструктора без параметров, потому что это будет объект в недопустимом состоянии в 99% случаев.

Это хороший способ двигаться вперед? Это становится огромной PITA, когда вы просто хотите быстро создать новый класс.

Ответы [ 3 ]

2 голосов
/ 21 ноября 2008

Как сказал Килхоффер, это зависит от того, что вы пытаетесь сделать с классом. При каких обстоятельствах вы хотели бы создать новый класс без фактической инициализации свойств? Если у вас есть экземпляры методов, которые вы хотите вызвать, которые не требуют каких-либо данных, вы можете подумать о том, чтобы пометить эти методы как статические или перенести методы в отдельный класс. Также возможно, что у вашего класса есть еще одно допустимое состояние - полностью пустое.

Лично я верю во все в меру. Если коэффициент PITA высок, и вы достаточно уверены, что не столкнетесь с проблемами, тогда кажется, что конструкторы без параметров будут в порядке. В какой-то момент я думаю, что это становится вопросом мнения.

2 голосов
/ 21 ноября 2008

Хороший вопрос. У меня есть нацистские друзья DDD, которые говорят, что конструкторы без параметров - это дьявол. Я согласен с этим в определенной степени, но я также чувствую, что это зависит от цели класса.

0 голосов
/ 18 декабря 2008

Все зависит от того, кто вызывает конструктор. Если это делают только ваши фабрики, то на самом деле проблем нет, потому что ваши фабричные методы становятся конструкторами "на стороне домена", а реальные конструкторы - деталь реализации.

...