Általános felelősség

Az általános felelősség szoftverfejlesztési minták (vagy elvek), az osztályoknak és objektumoknak történő felelősségátadás alapelveit fogalmazza meg az objektumorientált modellben. Ezen minta nem köthető a SOLID elvekhez.

Az általános felelősség által megfogalmazott minták és elvek a kontroller, a létrehozó, a kerülőút, a szakértő, a magas kohézió, az alacsony csatoltság, a többalakúság, a védett variáció, illetve a tiszta gyártmány. Mindegyik minta megoldás néhány olyan programozási problémára mely jellemző szinte minden projektre. Ezen technikák nem új módszerek, hanem a régi jól bevált objektumorientált programozási gyakorlatok dokumentált, sztenderizált gyűjteményei.

Craig Larman állítása alapján "a legfontosabb eszköz a szoftverfejlesztésben a tervezési elvek ismerete. Nem az UML ábra vagy egyéb technológia". Ezért, az általános felelősség elvei hasznos eszközök az objektumorientált szoftverfejlesztésben.

Minták

[szerkesztés]

Az objektumorientált modellben mintának nevezzük egy probléma és megoldás együttesét amit alkalmazhatunk új kontextusokban, egy minta megmutatja hogyan alkalmazzuk az általa kínált megoldást különböző esetekben előnyei és hátrányai figyelembevételével. A legtöbb minta a probléma konkrétságára való tekintettel a felelősség objektumokra való átruházását javasolja.

Kontroller

[szerkesztés]

Az kontroller minta a felelősséget egy olyan osztálynak adja amely nem képezi a grafikus interfész részét, ugyanakkor reprezentálja a teljes rendszert vagy az adott felhasználási területet. A kontroller objektum egy nem grafikus objektum ami a fellépő események fogadásáért és kezeléséért felelős.

Ha a kontroller egy adott felhasználási területet kezel, akkor le kell fedje azon terület összes eseményét. Például a Felhasználó létrehozás és a Felhasználó törlése egyesíthető egy FelhasználóKontrollerré ahelyett hogy két különböző kontrollert írunk hozzájuk,

A kontroller az első objektum amellyel az grafikus interfész kapcsolatba lép, amely a rendszer utasításokat fogadja és kezeli. A kontroller csak átadja a feladatokat más objektumoknak és felügyeli azoknak végrehajtását. A kontroller maga nem tartalmazza a feladat logikáját.

Létrehozó

[szerkesztés]

Az objektumok létrehozása az egyik leggyakoribb tevékenység az objektumorientált rendszerekben. Az osztály amely létrehozza az objektumokat alapját képezi az objektumok közti kapcsolatnak.

Általánosságban B felelős A létrehozásáért, ha egy vagy több az alábbiak közül fennáll:

  • B egyedei tartalmazza vagy csoportosítja A egyedeit
  • B egyedei jegyzik A egyedeit
  • B egyedei használják A egyedeit
  • B tartalmazza A alap belső állapotát és létrehozáskor átadja azokat.

Kerülőút

[szerkesztés]

A kerülőút mintha az Alacsony fokú csatoltság támogatására szolgál, illetve lehetőséget biztosít az újrafelhasználásra, a kapcsolattartás felelősségének átadásával egy köztes objektumnak. Erre egy példa a kontroller bevezetése az adat (modell) és a felhasználói felület között az mvc mintában. Ez biztosítja hogy a kettő közti csatoltság alacsony fokú marad.

Szakértő

[szerkesztés]

Szakértő (vagy szakértő alapelv) egy alapelv ami meghatározza hova delegáljuk az olyan általános felelősségeket mint a metódusok, számított mezők, stb.

A szakértő alapelv egy általános megközelítése a felelősség átadásának, mely szerint meg kell állapítanunk milyen információra van szükségünk a felelősség végrehajtásához és hol tároljuk azt.

Ez azt jelenti hogy annak az osztálynak adjuk a felelősséget amely a legtöbb információt tartalmazza a végrehajtáshoz.

Magas kohézió

[szerkesztés]

A magas kohézió egy értékelő minta amely célja az elemek pontos, kezelhető és érthető formában tartása. Magas kohézió általában az Alacsony fokú csatoltság támogatására használható. A magas kohézió azt jelenti hogy egy elem felelősségei összefüggenek és erősen központosítottak. Egy program kisebb osztályokra és alrendszerekre bontása egy példa a kohézió növelésére egy rendszeren belül. Alacsony kohézió akkor jön létre ha egy elem túl sok tőle független felelősséggel rendelkezik, alacsony kohéziójú elemek legtöbbször nehezen érthetőek, újrafelhasználhatóak, karbantarthatóak és változtathatóak.

Alacsony fokú csatoltság

[szerkesztés]

Az csatoltság egy mérőszám arra, hogy mennyire erősen kapcsolódik, ismeri, vagy függ másik elemektől. Az Alacsony fokú csatoltság egy olyan minta amely megmondja, hogyan adjuk át a felelősséget az alábbi előnyök eléréséhez:

  • alacsonyabb függőség két osztály között,
  • az osztályok egymásra gyakorolt befolyása,
  • magasabb újrafelhasználhatósági lehetőségek.

Többalakúság

[szerkesztés]

A többalakúság elve alapján a viselkedés meghatározásának felelőssége azon típushoz tartozik amelynek a variációja lejátszódik. Ez többalakú műveletek használatával történik. A felhasználó inkább többalakú műveleteket használjon a típusalapú egyértelmű elágazások helyett.

Védett variációk

[szerkesztés]

A védett variációk minta megvédi az elemeket más elemek különféle variációitól, azáltal hogy egy az instabilitást okozó tényezőt egy interfészbe csomagolja és a többalakúságot kihasználva többféle implementációt hoz létre arra.

Tiszta gyártmány

[szerkesztés]

A tiszta gyártmány egy osztály mely nem tartalmazza a domain problémát, hanem kifejezetten az Alacsony fokú csatoltság, a magas kohézió és az újrafelhasználhatóság érdekében lett létrehozva. Ezt az osztályt szolgáltatásnak hívjuk a domain-vezérelt modellekben.

Idézetek

[szerkesztés]