Szép példája annak, hogy mi az az állapottérben gondolkodás (vagy nem), hogy ha van egy objektumod (osztályod), és azon felüldefiniálod az Equals operátort.
Az objektumnak van egy egyedi azonosítója az SQL-ben, ami egyedi, és van másik 70 property-je ami állapotot és egyéb paramétereket ír le.
Ha az Equals-ban azt implementálod le, hogy egyezőség ID egyezőséget jelent, akkor hamar bele fogsz futni egy csúnya problémába: Kliensen módosítod az objektumot, majd szeretnél meggyőzödni, hogy az eredeti objektum és a módosított megegyezik-e, akkor erre az Equals true-t fog visszaadni, miközben az állapota is megváltozhatott az objektumnak, tehát teljesen más végeredményt fog hozni, mint amit egy programozó vár.
Az objektum teljes állapota az összes attribútuma, és egy Equals függvénytől azt várod el, hogy vizsgálatkor a fenti esetben false-t adjon vissza.
Szóval csak óvatosan az Equals felüldefiniálással.
Feliratkozás:
Megjegyzések küldése (Atom)
Nincsenek megjegyzések:
Megjegyzés küldése