7 svarbiausi programinės įrangos projektavimo modeliai

Norėdami išsamiai įsigilinti į programinės įrangos projektavimo modelių temą, apsilankykite programinės įrangos projektavimo modeliuose: geriausia praktika kūrėjams, kuriuos sukūrė C.H. Afzal, programinės įrangos inžinierius veteranas, turintis ilgametę patirtį dirbant „Netflix“, „Microsoft“ ir „Oracle“. Daugybė žemiau pateiktų duomenų yra apibendrinti iš jo kurso.

Kodėl reikia kurti modelius?

Dizaino modeliai pastaraisiais laikais tapo tam tikrų diskusijų objektu programavimo pasaulyje, daugiausia dėl jų suvokiamo „per didelio naudojimo“, dėl kurio atsirado kodas, kurį gali būti sunkiau suprasti ir valdyti.

Svarbu suprasti, kad dizaino modeliai niekada nebuvo skirti būti nulaužtiems kartu su nuorodomis, kad jūsų kodas būtų pritaikytas atsitiktinai, „visiems tinkančiam“ būdu. Galiausiai programinės įrangos inžinerijoje nepakeičiamas tikras problemų sprendimo gebėjimas.

Tačiau išlieka faktas, kad dizaino modeliai gali būti nepaprastai naudingi, jei jie naudojami tinkamose situacijose ir dėl tinkamų priežasčių. Kai jie naudojami strategiškai, jie gali padaryti programuotoją žymiai efektyvesnį, nes leidžia išvengti išminties rato išradimo, užuot naudodami kitų jau patobulintus metodus. Jie taip pat teikia naudingą bendrą kalbą, kad būtų galima apibrėžti pasikartojančias problemas ir sprendimus, kai diskutuojama su kitais ar tvarkomi kodai didesnėse komandose.

Nepaisant to, svarbus įspėjimas yra užtikrinti, kad kūrėjas suprastų, kaip ir kodėl už kiekvieno modelio yra suprantama schema.

Be papildomo reikalavimo (bendra svarbos tvarka, nuo mažiausiai iki mažiausio):

Svarbiausi dizaino modeliai

  1. Singletonas

Singletono schema naudojama norint apriboti klasės sukūrimą tik su vienu objektu. Tai naudinga, kai vienas (ir tik vienas) objektas reikalingas norint koordinuoti veiksmus visoje sistemoje. Yra keletas pavyzdžių, kai turėtų būti tik vienas klasės egzempliorius, įskaitant talpyklas, gijų rinkinius ir registrus.

Inicijuoti klasės objektą yra labai svarbu, tačiau kaip užtikrinti, kad kada nors būtų sukurtas tik vienas objektas? Atsakymas yra tai, kad konstruktorius taptų „privačiu“ klasei, kurią ketiname apibrėžti kaip singletoną. Tokiu būdu privačius konstruktorius gali pasiekti tik klasės nariai ir niekas kitas.

Svarbus aspektas: pavienį klasę galima perklasifikuoti, jei konstruktorius yra apsaugotas, o ne privatus. Tam tikromis aplinkybėmis tai gali būti tinkama. Vienas iš šių scenarijų yra būdas sukurti poklasių singletonų registrą, o „getInstance“ metodas gali įvesti parametrą arba naudoti aplinkos kintamąjį norint grąžinti norimą singletoną. Tada registras prižiūri eilutės pavadinimų pavienius objektus, kuriuos galima pasiekti prireikus.

2. Gamyklinis metodas

Įprasta gamykla gamina prekes; programinės įrangos gamykla gamina objektus. Ir ne tik tai - ji tai daro nenurodydama tikslios kuriamo objekto klasės. Norėdami tai padaryti, objektai sukuriami paskambinus gamyklos metodu, o ne vadinant konstruktoriumi.

Paprastai objektų kūrimas „Java“ programoje vyksta taip:

SomeClass someClassObject = naujas SomeClass ();

Aukščiau pateikto požiūrio problema yra ta, kad kodas, naudojantis „SomeClass“ objektą, staiga tampa priklausomas nuo konkretaus „SomeClass“ diegimo. Naudojant naujus kuriant objektus nėra nieko blogo, tačiau tai yra rankinis kodas, kurį reikia sujungti su konkrečia įdiegimo klase, nes tai kartais gali sukelti problemų.

3. Strategija

Strategijos modelis leidžia sugrupuoti susijusius algoritmus pagal abstrakciją, o tai leidžia pakeisti vieną algoritmą ar strategiją kitu nekeičiant kliento. Užuot tiesiogiai įgyvendinęs vieną algoritmą, kodas gauna vykdymo instrukcijas, kuriose nurodoma, kurią iš algoritmų grupės vykdyti.

4. Stebėtojas

Šis modelis yra vienas nuo kito priklausomybė tarp objektų, todėl, kai vienas objektas keičia būseną, pranešama apie visus jo priklausomus asmenis. Paprastai tai atliekama paskambinus į vieną iš jų metodų.

Paprastumo dėlei pagalvokite apie tai, kas nutinka, kai ką nors sekate „Twitter“. Iš esmės jūs prašote „Twitter“ atsiųsti jums (stebėtojui) tviterio atnaujinimus apie asmenį (subjektą), kurį stebėjote. Šabloną sudaro du veikėjai: stebėtojas, kuris domisi atnaujinimais, ir subjektas, kuris generuoja atnaujinimus.

Dalykas gali turėti daug stebėtojų ir yra vienas su daugeliu santykių. Tačiau stebėtojas gali užsisakyti ir kitų dalykų atnaujinimus. Galite užsiprenumeruoti naujienų kanalą iš „Facebook“ puslapio, kuris bus tema, ir, kai tik puslapis bus naujas, abonentas pamatys naują įrašą.

Pagrindinis aspektas: jei tiriamieji yra keli ir nedaug stebėtojų, jei kiekvienas subjektas savo stebėtojus saugo atskirai, tai padidins saugojimo išlaidas, nes kai kurie tiriamieji tą patį stebėtoją kaups kelis kartus.

5. Statybininkas

Kaip rodo pavadinimas, objektams statyti naudojamas statybininko modelis. Kartais mūsų kuriami objektai gali būti sudėtingi, sudaryti iš kelių dalinių objektų arba pareikalauti išsamaus statybos proceso. Sudėtingų tipų kūrimo pratimus galima supaprastinti naudojant statybininko modelį. Kompozitinis arba agregatinis objektas yra tai, ką paprastai pastato statytojas.

Pagrindinis aspektas: statybininko modelis gali atrodyti panašus į „abstrakčiojo gamyklos“ modelį, tačiau vienas skirtumas yra tas, kad statytojo modelis sukuria objektą žingsnis po žingsnio, tuo tarpu abstraktus gamyklos modelis objektą grąžina vienu kartu.

6. Adapteris

Tai leidžia nesuderinamoms klasėms veikti kartu, konvertuojant vienos klasės sąsają į kitą. Pagalvokite apie tai kaip apie vertėją: kai susitinka du valstybių vadovai, kurie nemoka bendros kalbos, paprastai vertėjas sėdi tarp jų ir verčia pokalbį, taip sudarydamas sąlygas bendrauti.

Jei turite dvi programas, iš kurių viena išstumia išvestį kaip XML, o kitoje, kuriai reikia JSON įvesties, jums reikės adapterio tarp jų, kad jos veiktų sklandžiai.

7. Valstybė

Būsenos schema apima įvairias būsenas, kuriose gali būti mašina, ir leidžia objektui pakeisti savo elgesį, kai keičiasi jo vidinė būsena. Mašina ar kontekstas, kaip jis vadinamas modelio kalbėjimu, gali būti imamasi veiksmų, kurie ją varo į skirtingas būsenas. Nenaudojant šablono, kodas tampa nelankstus ir užpildytas sąlyginėmis kitomis aplinkybėmis.

Norite toliau mokytis?

Naudodamiesi programinės įrangos projektavimo šablonais: geriausia praktika kūrėjams, turėsite galimybę padaryti ne tik perskaityti teoriją. Galėsite įsigilinti į tikras problemas ir suprasti praktinius sprendimus naudodami realaus gyvenimo kodo pavyzdžius.

Kursas yra paremtas populiaria „Gang of Four“ knyga, tačiau pateikiamas interaktyviu, lengvai virškinamu formatu. Interaktyviai įvaldysite 23 garsiausius knygos dizaino modelius, išmoksite 3 pagrindinių dizaino modelių (kūrybinio, struktūrinio ir elgsenos) tinkamus pritaikymo būdus ir išmoksite pritaikyti šiuos dizaino modelius savo projektuose.

Patikrinkite dabar.

Iš pradžių paskelbta tinklalapyje blog.educative.io 2018 m. Lapkričio 7 d.