Patró de disseny (informàtica)
De Viquipèdia
En l'enginyeria de programari, un patró de disseny és una solució general a un problema comú i recurrent en el disseny de programari. Un patró de disseny no és un disseny acabat que es pot transformar directament en codi; és una descripció o plantilla per resoldre un problema que es pot utilitzar en moltes situacions diferents.
Els patrons de disseny orientats a objectes normalment mostren relacions i interaccions entre classes o objectes, sense especificar les classes d'aplicació finals o objectes que hi estan implicats. Els algoritmes no són considerats patrons de disseny, ja que aquests resolen els problemes computacionals més que els problemes de disseny.
Taula de continguts |
[edita] Història
Els patrons sorgiren com a concepte d'arquitectura de la mà de Christopher Alexander. El 1987, Kent Beck i Ward Cunningham començaren a experimentar amb la idea d'aplicar patrons a la programació i van presentar els resultats a la conferència d'OOPSLA aquell mateix any. En els anys següents, Beck, Cunningham i altres investigaren aquesll treball.
Els patrons de disseny guanyaren popularitat en la informàtica després de la publicació del llibre Design Patterns: Elements of Reusable Object-Oriented Software l'any 1994.
[edita] Patrons Creacionals
- Abstract Factory (Fabrica abstracta): Permet treballar amb objectes de diferents families de manera que aquestes families no es barregin, però fent que el tipus de familia utilitzat sigui transparent.
- Factory Method (Mètode de fabricació): Centralitza en una classe constructora la creació d'objectes d'un subtipus d'un tipus determinat, ocultant a l'usuari la casuística per escollir el subtipus a crear.
- Builder (Constructor virtual): Abstrau el procés de creació d'un objecte complex, centralitzant-lo en un únic punt.
- Prototype (Prototip): Crea nous objectes clonant-los d'una instància existent.
- Singleton (Instància única): Garantitza l'existència d'una única instància per una classe i la creació d'un mecanisme d'accés global per aquesta instància.
[edita] Patrons Estructurals
- Adapter (Adaptador): Adapta una interfícia perquè pugui ser utilitzada per una classe que, d'altra manera, no podria.
- Bridge (Pont): Desacobla una abstracció de la seva implementació.
- Composite (Objecte compost): Permet tractar objectes compostos com si es tractés d'un de sol.
- Decorator (Envolcall): Afegeix funcionalitats a una classe dinàmicament.
- Facade (Façana): Proveeix d'una interfície unificada simple per accedir a una interfície o grup d'interfícies d'un subsistema.
- Flyweight (Pes lleuger): Redueix la redundància quan gran quantitat d'objectes posseeixen idèntica informació.
- Proxy : Manté un representat d'un objecte.
[edita] Patrons de Comportament
- Chain of Responsibility (Cadena de responsabilitat): Permet establir la línea que han de seguir els missatges perque els objectes executin una tasca indicada.
- Command (Ordre): Encapsula una operació en un objecte, permetent executar aquesta operació sense necessitat de conèixer-ne el contingut.
- Interpreter (Intèrpret): Donat un llenguatge, en defineix la gramàtica així com les eines necessàries per interpretar-lo.
- Iterator (Iterador): Permet realitzar recorreguts sobre objectes compostos independentment de la seva implementació.
- Mediator (Mediador): Defineix un objecte que coordini la comunicació entre objectes de diferents classes, però que funcionen com un conjunt.
- Memento (Record): Permet tornar a estats anteriors del sistema.
- Observer (Observador): Defineix una dependència de un a molts entre objectes, de manera que quan un objecte canvia d'estat es notifiqui i s'actualitzin automàticament tots els objectes que en depenen.
- State (Estat): Permet que un objecte canvii el seu comportament cada vegada que canvii el seu estat intern.
- Strategy (Estratègia): Permet disposar de diversos mètodes per a resoldre un problema i escollir-ne un en temps d'execució.
- Template Method (Mètode plantilla): Defineix en una operació l'esquelet d'un algoritme, delegant a les subclasses alguns dels passos, el que permet que les subclasses redefineixin certs passos d'un algoritme sense canviar-ne l'estructura.
- Visitor (Visitant): Aquest patró serveix per indicar que algú (visitador) ha visitat quelcom i així saber que ha estat visitat per un visitador.
[edita] Enllaços externs
- The PatternShare community - una comunitat per compartir patrons. (anglès)
- Guia de llocs web que proporcionen catàlegs de patrons (anglès)