Care sunt modelele de design

amintiri din tinerețe Bit

Când eram la universitate, am fost învățați într-unul dintre cursurile de modele de design. La acea vreme, au părut să-mi ceva ca un cal sferic într-un vid, deoarece experiența aplicării lor, am avut (era al treilea sau începutul celui de al patrulea an mulți ani în urmă). Amintiți-vă cine este cine, de asemenea, a fost destul de dificil, să nu mai vorbim de complexitatea și detaliile. Cu toate acestea, întrebări cu privire la modelele de design cerut, fără a eșua la fiecare interviu de locuri de muncă. Solicitanții au trebuit să umfle obrajii și de a dovedi cat de cool diferite template-uri (în special Singleton), vazandu-le în viața de maximum o dată sau de două ori pe paginile cărților.







Dar oamenii nu prost au venit cu modele de design:

Apoi, în continuare înregistrările istorice nu are sens. A fost prima carte din care generația noastră a atras cunoștințele sale de modele de design și a încercat să le aplice în activitatea lor. Este considerat un clasic în subiect, și lectura obligatorie.

După un timp de lucru, am început să observ că, chiar și cunoștințele teoretice de modele de design pentru a mă ajuta să înțeleagă codul altcuiva este mult mai rapid. Acest lucru este deosebit de important la începutul carierei, când trebuie să se îngropa în proiectele existente, fără experiență. De exemplu, o clasă de întâlnirea cu Generatorul de sufixul, am realizat că a adăugat pentru a simplifica logica de construcție și izolarea obiectelor complexe. imediat am găsit-o ușor să-l folosească și utilizați în cod. De-a lungul reprezentanții modelului Singleton au fost împrăștiate, pentru a face o greșeală în timpul inițializării sunt atât de ușor, fără cunoașterea regulilor. În codul, cu care am lucrat, cu dărnicie de fațadă, Vizitator, Lanțul de responsabilitate, Iterator, adaptor, Decorator, Proxy, Strategie, Metoda Template, și alte modele de design populare.

Și cum fără șabloane?

Pe măsură ce timpul a mers pe ... Am repede am obișnuit cu utilizarea pe scară largă a modelelor de design și a devenit dificil de a lucra fără ele. Am început să înțeleg ce interviu candidaților li se cere despre ele (desigur, în cazul în care nu doar „pentru spectacol“). Aici nu este chiar modele obligatorii de design de aplicare, precum și privind facilitarea comunicării între dezvoltatori. Și acest lucru este procesul care este esențială pentru dezvoltarea - o discuție de arhitectură și design de o anumită soluție.

Primul parametru important - în momentul în care este petrecut în discuție și de luare a deciziilor (sper să nu accept soluții unul bărbos Senior Senior Global Product Software Architect). Imaginați-vă cât de greu ar fi rapid pentru a explica cuiva ceea ce este nevoie pentru a realiza decoratorul: «Trebuie să facem o clasă, pe care o vom da proiectantul o copie a unui alt punerea în aplicare a aceleiași interfețe, și care se va adăuga logica pentru a apela aceste metode, fără a schimba comportamentul lor de bază. „Dar chiar și în spatele scenei erau o grămadă de lucruri mici și nuanțe. Și este pentru piese mici de design, care, în majoritatea zeci de decizii, sau chiar sute. Noi nu am atins chiar complexe și grave modele arhitecturale.







Pe exemplul anilor Decorator ușor de înțeles de-al doilea parametru important - aceeași înțelegere a soluției de proiectare a problemei în mintea tuturor membrilor echipei. Când neclaritate formularea oricine poate înțelege decizia în moduri diferite, dar este plină de probleme. La urma urmei, punerea în aplicare poate fi foarte diferit de ideile puse în discuție. Acest lucru va duce la un timp suplimentar în codul de revizuire și de rework.

Al treilea parametru important - înțelegerea activității instrumente terță parte și biblioteci. În momentul de față, aproape în fiecare proiect utilizează multe soluții terțe părți. Pentru a le utiliza în mod corect și nu călcați pe o grebla, arhitectul și dezvoltatorul trebuie să înțeleagă cum funcționează. În acest scop, modele care sunt concepute pentru a simplifica foarte mult înțelegerea și în comparație cu soluțiile alternative bine-cunoscute.

În viață, vom folosi în mod activ exemple pentru a descrie situațiile, obiectele și acțiunile. Pentru a explica cuiva ce un concept, ne sunt bazate pe cunoștințe generale comune și să se bazeze pe exemple ale acestora. „La fel ca și Bob sănătos“, „precum și greu după 5 km de jogging“, „rău ca mahmureala“, „cum ar fi acru de lămâie“, etc. Noi folosim aceste expresii în discursul său în mod constant și nici măcar nu a observat. Pentru noi, aplicarea lor este mai ușor decât descrierea detaliată și permite ascultătorului să înțeleagă mai bine te.

Nivelul următor

Dacă observați că nu încercați să-și amintească detalii cu privire la punerea în aplicare a șablonului de proiectare, dar poate oferi doar detalii cu privire la aplicarea sa în propriile lor cuvinte, pe care le-ați depășit nivelul de Shu în bine-cunoscut filozofia de Est Shuhari (am avut mult timp în urmă scris despre aplicabilitatea sa la abordări și practici Agile) . La nivelul Shu doar să urmați șablonul și nu pot realiza utilitatea lor, subtilitate și impactul. La nivelul Ha ești conștient și poate abandona în mod conștient anumite tipare, criticând deciziile bazate pe acestea, modifica unele template-uri pentru o anumită situație și context.

Ne place același nivel de Ri. La acest nivel sunt la toate opri să se gândească la utilizarea de template-uri. Soluțiile se nasc în mod natural pe baza cunoștințelor și abilitățile pe care le-ați acumulat de-a lungul anilor. profilează Undeva unele șabloane undeva de propria muncă, care a devenit model pentru tine în acest context. În capul meu încetați să lucrați lanțul „de pe șablon la o soluție“ și numai „din decizia de a șablonului“. Apoi, în loc de întrebări cu privire la modelele specifice de design într-un interviu, te duci pentru a deschide problema aplicabilității acestui instrument și exemple din viața reală ...

concluzie

modele de design - este unul dintre instrumentele de dezvoltare, care îl ajută pentru a economisi timp și de a face o mai bună decizie. Ca orice alt instrument în mâinile poate aduce multe beneficii, dar în celălalt - singurul rănit. Am încercat să transmită la exemplele pe care le va da un modele de design specifice și cum să se gândească la asta. Sper că am făcut-o ...

P.S. Pe una dintre training lăudate carte despre modele de design pentru incepatori «primul cap Design Patterns». Personal, el nu a citit-o, pentru că destul de stăpânit subiectul din alte surse și trata untrusted acest format cărți.