(Az informatikai polimorfizmus leírása itt található.)
A refaktorálás célja a kód átdolgozása, ésszerűsítése. 
Korábban már megtanultam, hogy az elágaztatás vagy a switch használata utal(hat) egy vagy több SOLID elv megsértésére.
A példák amit találtam switch kiváltására szolgálnak. Lényegében adott objektumon kell az adott feltétel szerint eltérő beavatkozást tenni. 
Kérdéses, hogy ez sérti e az egyetlen felelősség elvét, hiszen a feladat logikailag azonos.
Viszont a nyit/zárt elv (Egy osztály vagy modul legyen nyílt a kiterjesztésre, de zárt a módosításra.) alkalmazható az esetre. Hiszen bármelyik ág változtatási igénye esetén ennek az osztálynak a forrásában kell változtatni. Az adott objektumból származtatva létre lehet hozni az adott feladatot speciálisan kezelni tudó objektum osztályokat. Amelyek ebből eredően, csak rájuk vonatkozóan végzik el a tennivalókat. Itt mindjárt érvényesül a Liskov helyettesítési elv (Minden osztály legyen helyettesíthető a leszármazott osztályával anélkül, hogy a program helyes működése megváltozna.).
A szöveges példa és a videó anyag is támaszkodik az egységtesztekre illetve a teszt lefedettségre
Az ismertető részben már utaltam arra, hogy ez az eljárás, objektum leszármaztatással operál. A SOLID elvekből eredően, az adott objektumra vonatkozó tevékenység az adott objektumban megfelelő helyen van. 
(Zárójelben megjegyzem, szóba jöhet a stratégia tervezési minta használata is. Ekkor a stratégiákat megvalósító osztályok közös interfészt valósítanak meg. Így logikailag rokon az a megoldás. Illetve szolgáltató osztály is alkalmazható, ha a modell osztály tisztán tartása is cél. Ez utóbbi esetben ez az eljárás alkalmazható a szolgáltató osztály leszármaztatásával.)
A cél az, hogy minden az elágaztatási ághoz létezzen egy származtatott osztály amely speciálisan tudja elvégezni a feladatot.
A SOLID elvek érvényesítése mellett az elágazó szerkezet kitölti a metódus testét. Amennyiben az elágazó szerkezet mégis része egy eljárásnak, ki kell azt emelni metódusként.
Minden elágaztatott esethez létrejön egy a bázis osztálból származtatott osztály, amely felülbírálja az elágazást tartalmazó eljárást. A default ágban található kód marad az objektum eredeti osztályába. Elképzelhető, hogy valamelyik ágon nincs teendő, akkor abban az osztályban “üresen” kell implementálni a metódust. 
Az eljárás lényegéről itt olvashattok.

A bejegyzés trackback címe:

https://pharsan.blog.hu/api/trackback/id/tr2218007658

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása