top of page
Vyhledat
  • Obrázek autoraPetr Ondra

Princip SOLID v OOP

Aktualizováno: 7. 2. 2023

S - Single responsibility

O - Open - close

L - Liskov substitution

I - Interface segregation

D - Dependecy Inversion


S - Princip jediné odpovědnosti

O - Princip otevřeno-zavřeno

L - Liskovský princip substituce

I - Princip segregace rozhraní

D - Princip inverze závislosti


Princip jedné odpovědnosti

Třída by měla mít pouze jednu odpovědnost. Pro třídu není přípustné, aby se starala o dvě naprosto odlišné věci.


Princip otevřená-zavřená

Tento princip udává, že třida by měla být rozšiřitelná bez úprav a změn kódu.


Liskovsky princip substituce

Přesná definice:

„Nechť Φ(x) je vlastnost prokazatelná pro objekty x typu T. Pak by Φ(y) mělo platit pro objekty y typu S, kde S je podtyp T“.


Všechny podtypy třídy by měli mít stejnou perfektní funkčnost jako nadřazená třída. Pokud máme třidu která s naší třídou pracuje, musí být jedno, jestli tam pošleme nadřazenou třídu, nebo jakoukoliv podřazenou. Výsledek nemusí být stejný, ale správný, přičemž nemusí být shodné ani vstupní parametry.


Princip segregace rozhraní

Princip udává, že „klient by nikdy neměl být nucen implementovat rozhraní, které nepoužívá, nebo by klienti neměli být nuceni záviset na metodách, které nepoužívají“.

Funkčnost rozdělit do více Interfaces tak ,aby třída mohla zahrnout pouze to, co potřebuje pro svou funkčnost.


Princip inverze závislostí

Tento princip je zaměřen na volně propojené softwarové moduly, takže moduly na vysoké úrovni (které poskytují komplexní logiku) jsou snadno znovu použitelné a neovlivňují změny v modulech nízké úrovně (které poskytují užitečné funkce).


Podle Wikipedie tento princip říká, že:

Moduly vysoké úrovně by neměly importovat nic z modulů nízké úrovně. Obojí by mělo záviset na abstrakcích (například rozhraní).

Abstrakce by měly být nezávislé na detailech. Detaily (konkrétní realizace) by měly záviset na abstrakcích.


Jednoduše řečeno, tento princip říká, že vaše třídy by měly záviset na rozhraních nebo abstraktních třídách namísto konkrétních tříd a funkcí. Díky tomu jsou vaše třídy otevřené pro rozšíření podle principu otevřeno-uzavřeno.






7 zobrazení0 komentářů

Nejnovější příspěvky

Zobrazit vše

Návrhové vzory GoF

Návrhové vzory GoF (Gang of Four) jsou soubor základních návrhových vzorů pro objektově orientovaný návrh software, které poprvé...

Návrhové vzory

Dvou vrstvá architektura (SOA) Dvouvrstvá architektura se často používá u API serverů nebo služeb obecně. Občas se také setkáme s pojmem...

Comments


bottom of page