Modele de proiectare pentru începători
Dacă v-ați întrebat vreodată ce sunt modele de design, sunteți binevenit. În acest articol, am să-ți spun ce este, de ce au nevoie, cum să le folosească, și să dea exemple de cele mai comune șabloane în PHP.
Care sunt modele de design?
modele de design - sunt dovedite și gata de utilizare soluții de multe ori apar în sarcinile de programare de zi cu zi. Aceasta nu este o clasă sau o bibliotecă, care pot fi conectate la proiect, este ceva mai mult. Design Template este potrivit pentru sarcina, puse în aplicare în fiecare caz. În plus, aceasta nu depinde de limbajul de programare. Un șablon bun este ușor de pus în aplicare în cele mai multe, dacă nu toate limbile, în funcție de mijloacele de exprimare a limbajului. Cu toate acestea, trebuie amintit că un astfel de model să fie aplicat în mod incorect sau sarcini nepotrivite, poate aduce o mulțime de probleme. Cu toate acestea, aplicarea corectă a șablonului va ajuta pentru a rezolva problema rapid și ușor.
Există trei tipuri de șabloane:
șabloane structurale definesc relația dintre clase și obiecte, permițându-le să lucreze împreună.
template-uri Generarea furniza mecanisme de inițializare, permițându-vă pentru a crea obiecte mod convenabil.
modele comportamentale sunt folosite pentru a simplifica interacțiunea dintre entități.
Modele de ce design?
model de design, în esența sa, este o decizie conștientă a unei probleme. Dacă vă confruntați cu o problemă bine-cunoscut, de ce să nu folosească o soluție experiență dovedită de-a gata?
Să ne imaginăm că aveți nevoie pentru a combina cele două clase care efectuează operațiuni diferite, în funcție de situație. Aceste clase sunt puternic utilizate de sistemul existent, care nu permite să eliminați una dintre ele și se adaugă funcționalități în al doilea. În plus, schimbarea de cod ar necesita testarea extinse, pentru că un astfel de refactorizare duce la erori inevitabile. În schimb, puteți implementa șabloanele „strategie“ și „adaptor“ și să le utilizeze pentru a rezolva problema.
Simplu, nu-i așa? Să aruncăm o privire mai atentă la „Strategia“ model.
Format „Strategia“
Strategia - un model comportamental care vă permite să selectați comportamentul programului în timpul execuției, în funcție de context, prin incapsularea mai mulți algoritmi în diferite clase.
In exemplul de mai sus, alegerea strategiei se bazează pe valoarea contextului $ variabila. care a fost la momentul creării obiectului. În cazul în care valoarea a fost „context_for_class_one“. programul va folosi clasa class_one. Și vice-versa.
Bine, dar unde poate fi folosit?
De obicei, modelul „Strategia“ implică încapsularea algoritmi în clase, dar și în acest caz. Amintiți-vă că nu sunt obligate să urmeze cuvântul model de cuvânt. Orice variații sunt permise în cazul în care rezolva problema și pentru a îndeplini conceptul.
Format „adaptor“
Adaptor - șablonul structural, care vă permite să utilizați o clasă care implementează funcțiile necesare, dar cu interfața greșită.
De asemenea, vă permite să schimbați unele intrări pentru compatibilitate cu interfața de clasă internă.
Cum să-l folosească?
Un alt nume pentru adaptor - „Wrap“. El „înfășoară“ în jurul noii clase de interfață să-l folosească. Un exemplu clasic: trebuie să creați un model de clasă subiect, cu clase de obiecte în baza de date. În loc de a ajunge la clasele tabelare direct și apel metodele lor la un moment dat, puteți îngloba apelurile către aceste metode într-o singură metodă în adaptor. Acest lucru va nu numai un set de operațiuni de re-utilizare, dar, de asemenea, vă scutește de constantă re-scris o mulțime de cod, dacă aveți nevoie pentru a efectua același set de acțiuni în altă parte.
Comparați două exemple.
fără adaptor
Acum putem folosi clasa cont de fiecare dată și, în plus, putem adăuga caracteristici suplimentare.
Format „metoda de fabrica“
Factory - generarea unui model, care este o clasă cu o metodă de a crea diferite obiecte.
Scopul principal al acestui model - incapsuleaza procesul de creare clase diferite în aceeași funcție, care, în funcție de contextul transmis returnează obiectul dorit.
Cum să-l folosească?
Fabrica este frecvent utilizat pentru a crea diferite variante de realizare ale clasei de bază. Să presupunem că aveți o clasă de butoane - buton - și trei opțiuni - ImageButton. InputButton și FlashButton. Cu ajutorul fabricii puteți crea butoane diferite, în funcție de situație.
În primul rând, vom crea trei clase:
La ieșire ar trebui să fie toate tipurile de butoane HTML. Deci, avem posibilitatea de a indica ce tip de buton dorim să obțineți și reutilizarea codului.
„Decorator“ șablon
Decorator - un șablon structural, care vă permite să adăugați noul obiect de comportament la rulare, în funcție de situație.
Scopul - în comportamentul de expansiune al unui anumit obiect, fără a fi nevoie să se schimbe comportamentul clasei de baza. Acest lucru vă permite să utilizați mai multe decoratori în același timp. Acest șablon - o alternativă la moștenire. Spre deosebire de decorator de moștenire adaugă comportamentul în timpul rulării.
Pentru a pune în aplicare decorator avem nevoie de:
- Moșteniți clasa decorator de la bază.
- Adăugați un câmp cu referire la clasa de bază în decoratorul.
- Se trece o referire la obiectul decorat într-un designer decorator.
- Redirect metoda de decorator pe obiectul decorat.
- Override metode decorator al căror comportament trebuie să se schimbe.
Cum să-l folosească?
În primul rând, a determina care „seturi“ avem nevoie de:
Acum putem scrie decoratori le: