Hirdetés

Új hozzászólás Aktív témák

  • BE4GLE
    senior tag

    Nem teljesen java, inkább OOP kérdés, amiben kicsit elveszve érzem magam.
    Vannak állataink, legyen mondjuk kenguru és tigris. Szeretnénk építeni egy cirkuszt, több ilyen állattal.
    A cirkusz igazgató le tud hívni egy állatlistát, amiben látja mindkét fajt és az adataikat, pl. születési év. Illetve ha kiválaszt egyet, akkor utasítást adhat pl. egy gombbal. Mindkét állat tud a farkán ugrálni, viszont a kenguru el is tud rejteni valamit az erszényében.
    A problémám, hogy sokak szerint egy instanceof mindig code smell. Akár leszármazást, akár kompozíciót használok, valahogy meg kell tudnom a lista egy adott elméről, hogy milyen többlet képessége.
    Hogyan lehet ezt szépen megoldani?
    Illetve lehet-e dinamikussá tenni az egészet, hogy kódváltoztatás nélkül új fajokat kreáljon az igazgató, amik saját "képességekkel" rendelkeznek?

    Szerintem az insteanceof önmagában még nem code smell. Kotlinban sem code smell az is operator. Sőt, ha használod, még smart cast-olja is az objektumot. A java azért más picit, mert ott neked kell cast-olni. Inkább azt mondanám, hogy könnyű code smell-t csinálni vele javaban. Például figyelni kell, hogy csakis final pointerre hívd meg, mert hiába csekkolod, hogy instanceof ha később változhat az object amire a pointer mutat.

Új hozzászólás Aktív témák