logo

SOLID Princípy v programovaní: Pochopte s príkladmi zo skutočného života

Pri vývoji softvéru, Objektovo orientovaný dizajn hrá kľúčovú úlohu pri písaní flexibilného, ​​škálovateľného, ​​udržiavateľného a opakovane použiteľného kódu. Existuje toľko výhod používania OOD, ale každý vývojár by mal poznať aj princíp SOLID pre dobrý objektovo orientovaný dizajn v programovaní. Princíp SOLID zaviedol Robert C. Martin, tiež známy ako Uncle Bob a je to kódovací štandard v programovaní. Tento princíp je skratkou piatich princípov, ktoré sú uvedené nižšie:

  • Princíp jednotnej zodpovednosti (SRP)
  • Princíp otvorený/zatvorený
  • Liskovov substitučný princíp (LSP)
  • Princíp segregácie rozhrania (ISP)
  • Princíp inverzie závislosti (DIP)

SOLID-Princíp-v-programovaní-Pochopte-s-reálnymi-životnými-príkladmi



Princíp SOLID pomáha znižovať tesné spojenie. Tesné spojenie znamená, že skupina tried je na sebe veľmi závislá, čomu by ste sa mali vo svojom kóde vyhnúť.

  • Opakom tesného spojenia je voľné spojenie a váš kód sa považuje za dobrý kód, keď má voľne spojené triedy.
  • Voľne spojené triedy minimalizujú zmeny vo vašom kóde, pomáhajú pri vytváraní kódu, ktorý je viac opakovane použiteľný, udržiavateľný, flexibilný a stabilný. Teraz poďme diskutovať jeden po druhom o týchto princípoch...

1. Princíp jednotnej zodpovednosti

Tento princíp uvádza, že Trieda by mala mať len jeden dôvod na zmenu čo znamená, že každá trieda by mala mať jednu zodpovednosť alebo jednu prácu alebo jeden účel. Inými slovami, trieda by mala mať v softvérovom systéme iba jednu prácu alebo účel.

25 c až k

Poďme pochopiť princíp jednotnej zodpovednosti na príklade:



Predstavte si pekára, ktorý je zodpovedný za pečenie chleba. Úlohou pekára je zamerať sa na úlohu pečenia chleba a zabezpečiť, aby bol chlieb vysoko kvalitný, správne upečený a spĺňal štandardy pekárne.

singleton dizajn
  • Ak je však pekár zodpovedný aj za vedenie zásob, objednávanie zásob, obsluhu zákazníkov a čistenie pekárne, došlo by k porušeniu SRP.
  • Každá z týchto úloh predstavuje samostatnú zodpovednosť a ich kombináciou by mohlo dôjsť k ohrozeniu zamerania a efektívnosti pekára pri pečení chleba.
  • Na dodržanie SRP by pekáreň mohla prideliť rôzne úlohy rôznym jednotlivcom alebo tímom. Napríklad môže existovať samostatná osoba alebo tím zodpovedný za riadenie zásob, ďalší za objednávanie spotrebného materiálu, ďalší za obsluhu zákazníkov a ďalší za čistenie pekárne.

2. Princíp otvorený/zatvorený

Tento princíp hovorí, že Softvérové ​​entity (triedy, moduly, funkcie atď.) by mali byť otvorené pre rozšírenie, ale uzavreté pre úpravy čo znamená, že by ste mali byť schopní rozšíriť správanie triedy bez toho, aby ste ho upravovali.

Poďme pochopiť otvorený / uzavretý princíp pomocou príkladu:



Predstavte si, že máte triedu tzvPaymentProcessor>ktorý spracováva platby za internetový obchod. Spočiatku,PaymentProcessor>triedy podporuje iba spracovanie platieb pomocou kreditných kariet. Chcete však rozšíriť jeho funkčnosť, aby podporovala aj spracovanie platieb pomocou služby PayPal.

Namiesto úpravy existujúcehoPaymentProcessor>triedy na pridanie podpory PayPal, môžete vytvoriť novú triedu s názvomPayPalPaymentProcessor>ktorý predlžujePaymentProcessor>trieda. Týmto spôsobom,PaymentProcessor>trieda zostáva zatvorená pre modifikáciu, ale otvorená pre rozšírenie, v súlade s princípom Open-Closed

3. Liskovov substitučný princíp

Princíp zaviedla Barbara Liskov v roku 1987 a podľa tohto princípu Odvodené alebo podradené triedy musia byť zameniteľné za ich základné alebo rodičovské triedy . Tento princíp zabezpečuje, že každá trieda, ktorá je potomkom nadradenej triedy, by mala byť použiteľná namiesto jej nadradenej triedy bez akéhokoľvek neočakávaného správania.

Poďme pochopiť Liskovov substitučný princíp na príklade:

Jedným z klasických príkladov tohto princípu je obdĺžnik so štyrmi stranami. Výška obdĺžnika môže mať akúkoľvek hodnotu a šírka môže byť ľubovoľná. Štvorec je obdĺžnik s rovnakou šírkou a výškou. Môžeme teda povedať, že môžeme rozšíriť vlastnosti triedy obdĺžnika na triedu štvorcov.

trojitá zima

Aby ste to mohli urobiť, musíte vymeniť podradenú (štvorcovú) triedu za nadradenú (obdĺžnikovú) triedu, aby vyhovovala definícii štvorca so štyrmi rovnakými stranami, ale odvodená trieda neovplyvňuje správanie nadradenej triedy, takže ak tak urobíte že poruší zásadu Liskovskej substitúcie.

4. Princíp segregácie rozhrania

Tento princíp je prvým princípom, ktorý platí pre rozhrania namiesto tried v SOLID a je podobný princípu jedinej zodpovednosti. Uvádza to nenúťte žiadneho klienta, aby implementoval rozhranie, ktoré je pre neho irelevantné . Tu je vaším hlavným cieľom zamerať sa na vyhýbanie sa tučnému rozhraniu a dať prednosť mnohým malým klientskym špecifickým rozhraniam. Mali by ste uprednostniť veľa klientskych rozhraní pred jedným všeobecným rozhraním a každé rozhranie by malo mať špecifickú zodpovednosť.

Poďme pochopiť princíp segregácie rozhrania pomocou príkladu:

Predpokladajme, že vstúpite do reštaurácie a ste čistý vegetarián. Čašník v tejto reštaurácii vám dal jedálny lístok, ktorý obsahuje vegetariánske jedlá, nevegetariánske jedlá, nápoje a sladkosti.

  • V tomto prípade by ste ako zákazník mali mať jedálny lístok, ktorý obsahuje iba vegetariánske položky, nie všetko, čo v jedle nezjete. Tu by mal byť jedálny lístok odlišný pre rôzne typy zákazníkov.
  • Spoločný alebo všeobecný jedálny lístok pre každého možno rozdeliť na viacero kariet namiesto jednej. Použitie tohto princípu pomáha znižovať vedľajšie účinky a frekvenciu požadovaných zmien.

5. Princíp inverzie závislosti

Princíp inverzie závislosti (DIP) je princíp v objektovo orientovanom dizajne, ktorý to uvádza Moduly vysokej úrovne by nemali závisieť od modulov nízkej úrovne. Oboje by malo závisieť od abstrakcií . Okrem toho by abstrakcie nemali závisieť od detailov. Podrobnosti by mali závisieť od abstrakcií.

alternatíva mylivecricket
  • Zjednodušene povedané, DIP navrhuje, aby sa triedy spoliehali skôr na abstrakcie (napr. rozhrania alebo abstraktné triedy) než na konkrétne implementácie.
  • To umožňuje flexibilnejší a oddelený kód, čo uľahčuje zmenu implementácií bez ovplyvnenia iných častí kódovej základne.

Poďme pochopiť princíp inverzie závislosti pomocou príkladu:

V tíme vývoja softvéru vývojári závisia od abstraktného systému riadenia verzií (napr. Git), aby mohli spravovať a sledovať zmeny v kódovej základni. Nezávisia od konkrétnych podrobností o tom, ako Git interne funguje.

To umožňuje vývojárom sústrediť sa na písanie kódu bez toho, aby museli rozumieť zložitosti implementácie správy verzií.