7 najvažnijih modela dizajna softvera

Sveobuhvatno zavirite u temu Oblikovanja softverskog dizajna potražite uzorke dizajna softvera: Najbolje prakse za razvojne programere, kreirao C.H. Afzal, veteran softverski inženjer s višegodišnjim iskustvom u Netflixu, Microsoftu i Oracleu. Mnogo je nižeg iznosa sažeto iz njegovog predmeta.

Zašto dizajnirati obrasce?

Obrasci dizajna postali su predmet nekih kontroverzi u programskom svijetu u posljednje vrijeme, velikim dijelom zbog percipirane „prekomjerne uporabe“ koja vodi do koda koji je teže razumjeti i upravljati.

Važno je razumjeti da obrasci dizajna nikada nisu trebali biti hakirani zajedno prečaci da bi se primijenili na nesretan način "jedna veličina - sve" za vaš kôd. U konačnici nema zamjene za istinsku sposobnost rješavanja problema u programskom inženjerstvu.

Ostaje činjenica da dizajnerski uzorci mogu biti nevjerojatno korisni ako se koriste u pravim situacijama i iz pravih razloga. Ako se strateški koriste, programer mogu učiniti znatno učinkovitijim tako što će im omogućiti da izbjegnu izmisliti pregovorni kotač, umjesto da koriste metode koje su već usavršili drugi. Oni također nude koristan zajednički jezik za konceptualiziranje opetovanih problema i rješenja tijekom razgovora s drugima ili upravljanja kodom u većim timovima.

U skladu s tim, važno upozorenje jest osigurati da programer razumije i kako i zašto iza svakog uzorka.

Bez dodatnog obožavanja (općenitim redoslijedom važnosti, od većine najmanje):

Najvažniji obrasci dizajna

  1. jedna stvar

Singleton uzorak koristi se za ograničavanje stvaranja klase na samo jedan objekt. To je korisno kada je za koordiniranje radnji u sustavu potreban jedan (i samo jedan) objekt. Nekoliko je primjera gdje bi trebala postojati samo jedna instanca klase, uključujući predmemorije, nizove niti i registre.

Trivijalno je pokrenuti objekt klase - ali kako osigurati da se ikada stvori samo jedan objekt? Odgovor je konstruktor učiniti privatnim razredu koji namjeravamo definirati kao jednostruki. Na taj način samo članovi klase mogu pristupiti privatnom konstruktoru i nitko drugi.

Važno razmatranje: Moguće je podklasirati jednoton, ako konstruktor bude zaštićen umjesto privatnog. To bi moglo biti prikladno u nekim okolnostima. Jedan pristup koji se koristi u ovim scenarijima je kreiranje registra singltona podklasa, a metoda getInstance može uzeti parametar ili koristiti varijablu okoline da vrati željeni singlton. Tada registar održava preslikavanje imena niza u singleton objekte, kojima se može pristupiti po potrebi.

2. Tvornička metoda

Normalna tvornica proizvodi robu; tvornica softvera proizvodi predmete. I ne samo to - to se čini bez navođenja točne klase objekta koji će se stvoriti. Da bi se to postiglo, objekti se stvaraju pozivanjem tvorničke metode umjesto pozivanja konstruktora.

Stvaranje predmeta na Javi obično se odvija ovako:

SomeClass someClassObject = novi SomeClass ();

Problem s gornjim pristupom je taj što kôd koji koristi objekt SomeClass odjednom postaje ovisan o konkretnoj implementaciji SomeClass-a. Korištenje novih za stvaranje predmeta nema ništa loše, ali dolazi s prtljagom čvrsto povezanosti našeg koda s konkretnom izvedbenom klasom, što povremeno može biti problematično.

3. Strategija

Uzorak strategije omogućava grupiranje povezanih algoritama pod apstrakcijom, što omogućava isključivanje jednog algoritma ili pravila za drugi bez promjene klijenta. Umjesto da se izravno implementira jedan algoritam, kôd prima upute za vrijeme izvođenja koje određuju koju od skupina algoritama za pokretanje.

4. Promatrač

Ovaj je obrazac ovisnost između mnogih objekata tako da kada jedan objekt promijeni stanje, obaviještavaju se svi njegovi ovisnici. To se obično događa pozivanjem jedne od njihovih metoda.

Radi jednostavnosti, razmislite što će se dogoditi kad pratite nekoga na Twitteru. U osnovi tražite da Twitter pošalje vama (promatraču) tvit ažuriranja osobe (subjekta) koju ste slijedili. Uzorak čine dva aktera, promatrač koji je zainteresiran za nadogradnje i subjekt koji generira ažuriranja.

Subjekt može imati mnogo promatrača i odnos je jedan prema mnogima. Međutim, promatrač se može pretplatiti na ažuriranja i od drugih subjekata. Na news feed možete se pretplatiti s Facebook stranice, koja bi bila tema i kad god stranica ima novi post pretplatnik će vidjeti novi post.

Ključno razmatranje: U slučaju mnogih subjekata i nekoliko promatrača, ako svaki subjekt pohrani svoje promatrače odvojeno, to će povećati troškove skladištenja jer će neki subjekti pohraniti istog promatrača više puta.

5. Graditelj

Kao što naziv govori, za izradu objekata koristi se obrazac graditelja. Ponekad objekti koje stvaramo mogu biti složeni, sastavljeni od više pod-objekata ili zahtijevati složeni proces izgradnje. Vježba stvaranja složenih vrsta može se pojednostaviti korištenjem uzorka graditelja. Sastavljeni ili skupni objekt je ono što graditelj općenito gradi.

Ključno razmatranje: Obrazac graditelja može se činiti sličnim uzorku 'apstraktne tvornice', ali jedna je razlika što graditelj uzorak kreira objekt korak po korak, dok apstraktni tvornički uzorak vraća objekt u jednom potezu.

6. Adapter

To omogućava nekompatibilnim klasama da rade zajedno pretvaranjem sučelja jedne klase u drugu. Zamislite to kao neku vrstu prevoditelja: kada se sastaju dvije glave država koje ne govore zajedničkim jezikom, obično prevoditelj sjedi između njih dvoje i prevodi razgovor, omogućavajući tako komunikaciju.

Ako imate dvije aplikacije, pri čemu jedna ispljuje izlaz kao XML, a druga zahtijeva JSON ulaz, trebat će vam adapter između njih dva kako bi mogli neometano raditi.

7. Država

Obrazac stanja obuhvaća različita stanja u kojima stroj može biti, i omogućuje objektu da promijeni svoje ponašanje kada se njegovo unutarnje stanje promijeni. Stroj ili kontekst, kako ga naziva obrazac uzorak, mogu na njemu poduzeti radnje koje ga tjeraju u različita stanja. Bez korištenja uzorka, kôd postaje nefleksibilan i prepun je if-else uvjeta.

Želite nastaviti učiti?

Sa uzorcima dizajna softvera: Najbolje prakse za programere imat ćete priliku učiniti više od samo pročitati teoriju. Moći ćete zaroniti duboko u stvarne probleme i razumjeti praktična rješenja s primjerima iz stvarnog života.

Tečaj se temelji na popularnoj knjizi Bande četvero, ali predstavljenoj u interaktivnom, lako probavljivom formatu. Interaktivno ćete savladati 23 poznata dizajna iz knjige, naučiti pravilne primjene 3 ključne vrste dizajna (kreativni, strukturalni i bihevioralni) i naučiti uključiti te dizajnerske obrasce u vlastite projekte.

Pogledajte sada.

Izvorno objavljeno na blog.educative.io 7. studenog 2018. godine.