7 kõige olulisemat tarkvara kujundamise mustrit

Tarkvara kujundamise mustrite teema põhjalikuks süvenemiseks lugege C.H. loodud tarkvara kujundamise mustreid: parimad tavad arendajatele. Afzal, veteranide tarkvarainsener, kellel on mitmeaastane kogemus Netflixis, Microsoftis ja Oracle'is. Suur osa alljärgnevast on kokku võetud tema kursusest.

Miks kujundada mustreid?

Kujundusmustrid on viimasel ajal muutunud programmeerimismaailmas mõneks poleemikaks, suuresti tänu nende tajutud ülekasutamisele, mis viib koodini, mida võib olla raskem mõista ja hallata.

Oluline on mõista, et disainimustrid ei olnud kunagi mõeldud häkkimiseks koos otseteedega, mida teie koodile juhuslikult ja kõigile ühesuuruseks rakendada. Tarkvaratehnika tõelist probleemilahendusvõimet ei asenda lõppkokkuvõttes.

Fakt on siiski see, et kujundusmustrid võivad olla uskumatult kasulikud, kui neid kasutatakse õiges olukorras ja õigetel põhjustel. Strateegilisel kasutamisel saavad nad programmeerija märkimisväärselt efektiivsemaks muuta, võimaldades neil vältida vanasõnaratta uuesti leiutamist, selle asemel kasutades juba teiste täpsustatud meetodeid. Samuti pakuvad need kasulikku ühist keelt korduvate probleemide ja lahenduste kontseptualiseerimiseks teistega arutades või suuremates meeskondades koodi hallates.

Sellegipoolest on oluline hoiatus selle tagamisel, et arendaja saaks aru ka iga mustri taga olevast kuidas ja miks.

Ilma täiendava vaevata (üldises tähtsuse järjekorras, kõige vähemast):

Kõige olulisemad kujundusmustrid

  1. Singleton

Ainsuse mustrit kasutatakse klassi loomise piiramiseks ainult ühe objektiga. See on kasulik, kui kogu süsteemi toimingute koordineerimiseks on vaja ühte (ja ainult ühte) objekti. On mitmeid näiteid selle kohta, kus peaks eksisteerima ainult üks klassi eksemplar, sealhulgas vahemälud, lõimikogumid ja registrid.

Klassi objekti algatamine on triviaalne, kuid kuidas tagada, et kunagi luuakse ainult üks objekt? Vastus on see, et ehitaja muutuks klassiks, mida me defineerime singletonina, „privaatseks”. Nii pääsevad privaatsele ehitajale juurde ainult klassi liikmed ja mitte keegi teine.

Oluline kaalutlus: singletti saab alamklassi liigitada, muutes ehitaja privaatse asemel kaitstuks. See võib teatud tingimustel olla sobiv. Üks lähenemisviis nendes stsenaariumides on alamklasside singlettide registri loomine ja meetod getInstance võib võtta parameetri või kasutada soovitud singletoni tagastamiseks keskkonnamuutujat. Seejärel hooldab register stringi nimede kaardistamist üksikutele objektidele, millele on vajadusel juurde pääseda.

2. Tehase meetod

Tavaline tehas toodab kaupu; tarkvaravabrik toodab objekte. Ja mitte ainult - see toimub ilma täpsustamata loodava objekti täpse klassiga. Selle saavutamiseks luuakse objektid ehitaja kutsumise asemel tehasmeetodi kutsumisega.

Tavaliselt toimub objektide loomine Java-s järgmiselt:

SomeClass someClassObject = uus SomeClass ();

Ülaltoodud lähenemisviisi probleem on see, et SomeClassi objekti kasutav kood muutub nüüd ootamatult SomeClassi konkreetsest rakendamisest. Uute objektide loomisel pole midagi halba, kuid sellega kaasneb pagas, mille abil meie kood tuleb tihedalt siduda konkreetse rakendusklassiga, mis võib aeg-ajalt olla problemaatiline.

3. Strateegia

Strateegiamuster võimaldab seotud algoritme grupeerida abstraktsiooni alusel, mis võimaldab ühe algoritmi või poliitika teise jaoks välja lülitada ilma klienti modifitseerimata. Ühe algoritmi otsese juurutamise asemel võtab kood vastu käitusjuhiseid, milles täpsustatakse, millist algoritmi gruppi käivitada.

4. Vaatleja

See muster kujutab endast objektidevahelist sõltuvust ühelt-mitmele, nii et kui üks objekt muudab olekut, teavitatakse kõiki selle ülalpeetavaid. Tavaliselt tehakse selleks üks nende meetoditest.

Mõelge lihtsuse huvides sellele, mis juhtub, kui jälgite kedagi Twitteris. Sisuliselt palute Twitteril saata teile (vaatlejale) jälgitud inimese (subjekti) säutsu värskendused. Muster koosneb kahest näitlejast, vaatlejast, kes on uuenduste vastu huvitatud, ja subjektist, kes värskendusi genereerib.

Subjektil võib olla palju vaatlejaid ja suhe on ühelt-mitmele. Vaatlejal on vabadus tellida ka muude subjektide värskendusi. Saate tellida uudistevoo Facebooki lehelt, mis oleks teema ja alati, kui lehel on uus postitus, näeks tellija uut postitust.

Peamine kaalutlus: paljude katsealuste ja väheste vaatlejate puhul suurendab see vaatluskulusid, kui iga katsealune hoiab vaatlejaid eraldi, sest mõned subjektid salvestavad sama vaatlejat mitu korda.

5. Ehitaja

Nagu nimest järeldada võib, kasutatakse objektide ehitamiseks ehitaja mustrit. Mõnikord võivad meie loodud objektid olla keerukad, koosneda mitmest alamobjektist või nõuda keerulist ehitusprotsessi. Keerukate tüüpide loomise harjutusi saab ehitaja mustri abil lihtsustada. Liit- või liitobjekt on see, mida ehitaja üldiselt ehitab.

Peamine kaalutlus: ehitaja muster võib tunduda sarnane abstraktse tehase mustriga, kuid üks erinevus on see, et ehitaja muster loob objekti sammhaaval, samas kui abstraktne tehase muster tagastab objekti korraga.

6. Adapter

See võimaldab ühildumatutel klassidel koos töötada, teisendades ühe klassi liidese teiseks. Mõelge sellele kui omamoodi tõlkijale: kui kohtuvad kaks riigikeelt, kes ei räägi ühist keelt, istub tavaliselt tõlk nende vahel ja tõlgib vestluse, võimaldades nii suhelda.

Kui teil on kaks rakendust, millest üks sülitab väljundi XML-vormingus välja ja teine ​​nõuab JSON-sisestust, siis vajate nende sujuva töö tagamiseks nende kahe vahel adapterit.

7. Riik

Olekumudel kapseldab erinevad olekud, milles masin võib olla, ja võimaldab objektil muuta oma käitumist, kui sisemine olek muutub. Masinal või kontekstil, nagu seda nimetatakse mustrikõnes, võib selle suhtes olla rakendatud toiminguid, mis suunavad selle erinevatesse olekutesse. Ilma mustrit kasutamata muutub kood paindumatuks ja on täidetud if-else tingimuslike tingimustega.

Kas soovite jätkata õppimist?

Tarkvarakujundusmustrite abil: Parimad tavad arendajatele on teil võimalus teha rohkemat kui lihtsalt teooria lugemine. Saate sukelduda sügavatesse probleemidesse ja mõista reaalse elu koodinäidete abil praktilisi lahendusi.

Kursus põhineb Gang of Four populaarsel raamatul, kuid on esitatud interaktiivses ja hõlpsasti seeditavas vormingus. Valdate interaktiivselt raamatust 23 kuulsat kujundusmustrit, õpite kolme peamise kujundusmustri tüübi (loominguline, struktuurne ja käitumuslik) õigeid rakendusi ja õpite neid kujundusmustreid oma projektidesse ühendama.

Vaadake nüüd järele.

Algselt avaldati ajaveeb.educative.io 7. novembril 2018.