Przeczytałem niezliczoną liczbę postów na temat różnic między obiektami a obiektami Value i chociaż myślę, że przynajmniej koncepcyjnie rozumiem, jak te dwie rzeczy się różnią, wydaje się, że w niektórych z tych postów autorzy uważają określoną koncepcję domeny za VO po prostu dlatego, że jest niezmienny (a zatem jego stan nigdy się nie zmieni, przynajmniej w ramach tego konkretnego modelu domeny).
Czy zgadzasz się, że jeśli stan obiektu nigdy nie zmieni się w ramach określonego modelu domeny, to ten obiekt nigdy nie powinien być bytem? Dlaczego?
domain-driven-design
bckpwrld
źródło
źródło
Odpowiedzi:
Idąc po książce (Evans, 2004), „Obiekt zdefiniowany przede wszystkim przez swoją tożsamość nazywa się ENTITY”. Ta definicja jest niezależna od tego, czy obiekt jest zmienny czy niezmienny. Myślę, że znacznie mniej prawdopodobne jest, aby niezmienny obiekt był bytem w danej domenie, więc jest to przydatna heurystyka do decydowania, czy obiekt jest „obiektem wartości” czy „bytem”, ale nie jest to część definicji.
Załóżmy na przykład, że masz podmiot reprezentujący pracownika, który może, ale nie musi, mieć bezpośredniego przełożonego. Jeśli zdecydujesz się reprezentować ideę braku bezpośredniego przełożonego jako odniesienia do obiektu nadzorcy „zerowego”, wówczas obiekt nadzorcy „zerowy” jest racjonalnie uważany za byt. Prawdopodobnie możesz sprawić, że ten „zerowy” obiekt będzie niezmienny.
źródło
Sposób, w jaki to przeczytałem, jest taki, że obiekt wartości jest obiektem, który nie ma własnej tożsamości i nie ma nic wspólnego ze zmienianiem lub nie zmienianiem stanu. To czyni różnicę między jednostką a obiektem wartości, że jednostka ma klucz podstawowy, podczas gdy obiekt wartości nie; będzie miał klucz obcy do podmiotu, do którego należy.
http://lostechies.com/joeocampo/2007/04/23/a-discussion-on-domain-driven-design-value-objects/
Nadal mogę zmieniać właściwości obiektu wartości, ale nie trzeba go nigdy identyfikować niezależnie od jego istoty.
źródło