2008-11-21 14 views
5

Jednym z najemców DDD jest niedopuszczenie, aby obiekty wprowadziły nieprawidłowy stan. Dla mnie oznacza to, że nie powinien istnieć publiczny konstruktor bez parametrów, ponieważ będzie to obiekt w niepoprawnym stanie w 99% przypadków.DDD + publiczne konstruktory bez parametrów - czy powinny istnieć?

Czy to dobry sposób, aby iść do przodu? Staje się ogromnym PITA, gdy chcesz tylko szybko stworzyć nową klasę.

Odpowiedz

2

Dobre pytanie. Mam nazistowskich przyjaciół DDD, którzy twierdzą, że konstruktorzy bez parametrów są diabłami. Zgadzam się z tym w pewnym stopniu, ale uważam też, że zależy to od celu klasy.

2

Jak stwierdził Kilhoffer, zależy to od tego, co próbujesz zrobić z klasą. W jakich okolicznościach chciałbyś utworzyć nową klasę bez faktycznego inicjowania właściwości? Jeśli masz metody instancji, które chcesz wywołać, które nie wymagają żadnych danych, możesz rozważyć albo oznaczenie tych metod jako statycznych, albo przeniesienie metod do oddzielnej klasy. Możliwe jest również, że twoja klasa ma jeden dodatkowy ważny stan - całkowicie pusty.

Osobiście wierzę we wszystko z umiarem. Jeśli współczynnik PITA jest wysoki i masz pewność, że nie napotkasz problemów, to wydaje się, że konstruktorzy bez parametrów są w porządku. W pewnym momencie myślę, że staje się to kwestią opinii.

0

Wszystko zależy od tego, kto dzwoni do konstruktora. Jeśli tylko twoje fabryki to robią, wtedy nie ma problemu, ponieważ twoje metody fabryczne stają się konstruktorami "po stronie domeny", a prawdziwi konstruktorzy są szczegółem implementacji.