Keresés

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

  • cucka

    addikt

    válasz Lacces #6963 üzenetére

    Abstract factory helyett szerintem a sima factory is teljesen megfelelő.
    A különböző szakköreidet könnyű hierarchiába rendezni, tehát öröklődéssel megoldhatod az egészet, nincs szükség absztrakt osztályokra.

    A factory-d meg lényegében egy függvény, ami Szakkör objektumokkal tér vissza, hogy pontosan milyen osztályúakkal, azt az ő dolga kitalálni a bemenő paraméterekből.

    Esetleg csinálhatsz egy abstract factory-t, ahol a Szakkör osztályban lesz egy statikus függvény, ami saját maga példányaival tér vissza. Ezt megöröklik majd jól a leszármazottak is, tehát bármelyik szakkör osztályod fog tudni példányokat gyártani saját magából.

  • Karma

    félisten

    válasz Lacces #6963 üzenetére

    Szerintem a probléma, amit leírsz, nem a creational design patternek témakörébe tartozik. Amit leírtál, mint absztrakt és konkrét osztályok nem factoryk és productok. Az a különbség, hogy ezek mind adatjellegű osztályok, nincs közöttük "ő hozza létre őt" logikai kapcsolat, ergo nem gyárak.

    Úgy hiszem, hogy a problémának két része van, ami megkavarhatott.

    1) A szakkör példányokat (a maguk hierarchiájában) el kell tárolnod a MongoDB-ben. Itt azért befigyel, hogy az SQL táblának semmi köze nincs a Mongo kollekciójához, sokkal könnyebb dolgod van. Szerintem egy szakkör példány = 1 dokumentum a Szakkörök kollekcióban, és olyan tulajdonságai vannak, ami az adott típushoz tartozik. Ne gondolkodj előre megkötött oszlopokkal rendelkező táblákban!

    2) Létre kell hoznod a különböző típusú szakköröket, figyelembe véve a különböző kombinációkat, mert ezzel más és más tulajdonságokat lehet beállítani. Itt jön be az, hogy szerintem a felvázolt osztályhierarchia nem stimmel.

    A legegyszerűbb felállás, hogy adott a szakkör ősosztály, amiben a közös mezők találhatóak (beleértve a szakkör nyelvét), és ennek leszármazottai a ConcreteFactory/AbstractProduct alatt felsoroltak (ahogy szükséges). És ilyen leszármazott osztályokat kell létrehoznod akkor, amikor a felhasználó felvesz egy új szakkört.

    Na most a megfelelő osztály kiválasztása és példányosítása már factory probléma. Az előző hierarchia mellett van egy szakkörgyár, ami valamilyen kulcs alapján létrehozza az új példányt. Ehhez a Factory method minta is elég. A gyár implementálásához meg szükséged van valami támpontra, hogy milyen szakköröket lehet létrehozni.

    Most ennyire van (nincs) időm, remélem volt valami értelme :P
    Kritika természetesen jöhet.

    UI: természetesen a hierarchia mind a modell rétegbe kell hogy kerüljön. A gyár határeset. De ez nem olyan kritikus kérdés szvsz.

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

Hirdetés