Patrons de Disseny - UdGima.udg.edu/~sellares/EINF-ES2/Present1011/PresPatronsDisseny.pdf ·...
Transcript of Patrons de Disseny - UdGima.udg.edu/~sellares/EINF-ES2/Present1011/PresPatronsDisseny.pdf ·...
![Page 1: Patrons de Disseny - UdGima.udg.edu/~sellares/EINF-ES2/Present1011/PresPatronsDisseny.pdf · Exemples: Classe Gorda Botó màgic Carrera d’obstacles ... manera que els canvis en](https://reader035.fdocuments.es/reader035/viewer/2022062602/5edf86cdad6a402d666ade07/html5/thumbnails/1.jpg)
Xavier Pacheco
Lluís Clavaguera
Xavier Pacheco
Lluís Clavaguera
Patrons de DissenyPatrons de Disseny
1
ÍndexÍndex
Introducció
Llista de patrons
Conclusions
Bibliografia
2
![Page 2: Patrons de Disseny - UdGima.udg.edu/~sellares/EINF-ES2/Present1011/PresPatronsDisseny.pdf · Exemples: Classe Gorda Botó màgic Carrera d’obstacles ... manera que els canvis en](https://reader035.fdocuments.es/reader035/viewer/2022062602/5edf86cdad6a402d666ade07/html5/thumbnails/2.jpg)
IntroduccióIntroducció
Definició de Patró de disseny: “Un patró de disseny és un esquelet de les solucions a problemes de disseny en el desenvolupament del software”
Objectius: Reutilització de solucions
Facilitar el procés de disseny
Ajuden a la modularitat de les aplicacions
3
IntroduccióIntroducció
Tipus de patrons
Patrons d’arquitectura
Patrons de disseny
Creacionals
Estructurals
Comportament
Dialectes
Patrons D’interacció
4
![Page 3: Patrons de Disseny - UdGima.udg.edu/~sellares/EINF-ES2/Present1011/PresPatronsDisseny.pdf · Exemples: Classe Gorda Botó màgic Carrera d’obstacles ... manera que els canvis en](https://reader035.fdocuments.es/reader035/viewer/2022062602/5edf86cdad6a402d666ade07/html5/thumbnails/3.jpg)
IntroduccióIntroducció
Antipatró de disseny: “La idea és intentar explicar els problemes que pot comportar certs disseny molt frequents”
Exemples: Classe Gorda
Botó màgic
Carrera d’obstacles
Fàbrica de combustible
Sistema de tubs de calefacció
5
Llista de PatronsLlista de Patrons
6
![Page 4: Patrons de Disseny - UdGima.udg.edu/~sellares/EINF-ES2/Present1011/PresPatronsDisseny.pdf · Exemples: Classe Gorda Botó màgic Carrera d’obstacles ... manera que els canvis en](https://reader035.fdocuments.es/reader035/viewer/2022062602/5edf86cdad6a402d666ade07/html5/thumbnails/4.jpg)
Template MethodTemplate Method
Intenció: Definir una estructura que serà utilitzada en totes les subclasses, encara que redefinida.
Motivació: Definir una estructura de herència en que la superclasse que serveixi de plantilla dels mètodes en les subclasses.
7
Template Method - EstructuraTemplate Method - Estructura
8
![Page 5: Patrons de Disseny - UdGima.udg.edu/~sellares/EINF-ES2/Present1011/PresPatronsDisseny.pdf · Exemples: Classe Gorda Botó màgic Carrera d’obstacles ... manera que els canvis en](https://reader035.fdocuments.es/reader035/viewer/2022062602/5edf86cdad6a402d666ade07/html5/thumbnails/5.jpg)
Template Method - ExempleTemplate Method - Exemple
9
StrategyStrategy
Intenció: Permetre mantenir un conjunt d’algoritmes dels que l’objectiu client pot elegir aquell que li convingui i intercanviar-lo segons les seves necessitats.
Motivació: Qualsevol programa que ofereixi un servei o funció determinada, que pugui ser realitzada de diferents formes, és candidat a usar el patró Strategy. Pot haver-hi diferents estratègies i qualsevol d'elles pot ser intercanviada per una altre en qualsevol moment, inclús en temps d'execució.
10
![Page 6: Patrons de Disseny - UdGima.udg.edu/~sellares/EINF-ES2/Present1011/PresPatronsDisseny.pdf · Exemples: Classe Gorda Botó màgic Carrera d’obstacles ... manera que els canvis en](https://reader035.fdocuments.es/reader035/viewer/2022062602/5edf86cdad6a402d666ade07/html5/thumbnails/6.jpg)
Strategy - EstructuraStrategy - Estructura
11
Strategy - ExempleStrategy - Exemple
12
![Page 7: Patrons de Disseny - UdGima.udg.edu/~sellares/EINF-ES2/Present1011/PresPatronsDisseny.pdf · Exemples: Classe Gorda Botó màgic Carrera d’obstacles ... manera que els canvis en](https://reader035.fdocuments.es/reader035/viewer/2022062602/5edf86cdad6a402d666ade07/html5/thumbnails/7.jpg)
Factory MethodFactory Method
Intenció: Definir la interfície de creació d'un cert tipus d'objecte, permetent que les subclasses decideixin quina classe concreta necessiten instàncies.
Motivació: Consisteix en utilitzar una classe constructora (semblant al Abstract Factory).
13
Factory Method - EstructuraFactory Method - Estructura
14
![Page 8: Patrons de Disseny - UdGima.udg.edu/~sellares/EINF-ES2/Present1011/PresPatronsDisseny.pdf · Exemples: Classe Gorda Botó màgic Carrera d’obstacles ... manera que els canvis en](https://reader035.fdocuments.es/reader035/viewer/2022062602/5edf86cdad6a402d666ade07/html5/thumbnails/8.jpg)
Factory Method - ExempleFactory Method - Exemple
15
Abstract FactoryAbstract Factory
Intenció: El seu objectiu és independitzar un sistema de la manera com es creen, com es presenten els seus objectes.
Motivació: Hem de crear diferents objectes, tots pertanyents a la mateixa família.
16
![Page 9: Patrons de Disseny - UdGima.udg.edu/~sellares/EINF-ES2/Present1011/PresPatronsDisseny.pdf · Exemples: Classe Gorda Botó màgic Carrera d’obstacles ... manera que els canvis en](https://reader035.fdocuments.es/reader035/viewer/2022062602/5edf86cdad6a402d666ade07/html5/thumbnails/9.jpg)
Abstract Factory - EstructuraAbstract Factory - Estructura
17
Abstract Factory - ExempleAbstract Factory - Exemple
18
![Page 10: Patrons de Disseny - UdGima.udg.edu/~sellares/EINF-ES2/Present1011/PresPatronsDisseny.pdf · Exemples: Classe Gorda Botó màgic Carrera d’obstacles ... manera que els canvis en](https://reader035.fdocuments.es/reader035/viewer/2022062602/5edf86cdad6a402d666ade07/html5/thumbnails/10.jpg)
SingletonSingleton
Intenció: Restringir la creació d'objectes pertanyents a una classe o el valor d'un tipus a un únic objecte.
Motivació: El patró singleton s'implementa creant en la nostra classe un mètode que crea una instància de l'objecte només si encara no n'hi ha cap. Per assegurar que la classe no pot ser instanciada novament es regula l'abast del constructor (amb atributs com protegit o privat).
19
Singleton - EstructuraSingleton - Estructura
20
![Page 11: Patrons de Disseny - UdGima.udg.edu/~sellares/EINF-ES2/Present1011/PresPatronsDisseny.pdf · Exemples: Classe Gorda Botó màgic Carrera d’obstacles ... manera que els canvis en](https://reader035.fdocuments.es/reader035/viewer/2022062602/5edf86cdad6a402d666ade07/html5/thumbnails/11.jpg)
Singleton - ExempleSingleton - Exemple
21
AdapterAdapter
Intenció: Converteix la interfície d'una classe en la interfície que esperen els clients
Motivació: Adaptar a una mateixa entrada diferents components.
22
![Page 12: Patrons de Disseny - UdGima.udg.edu/~sellares/EINF-ES2/Present1011/PresPatronsDisseny.pdf · Exemples: Classe Gorda Botó màgic Carrera d’obstacles ... manera que els canvis en](https://reader035.fdocuments.es/reader035/viewer/2022062602/5edf86cdad6a402d666ade07/html5/thumbnails/12.jpg)
Adapter - EstructuraAdapter - Estructura
23
Adapter - ExempleAdapter - Exemple
24
![Page 13: Patrons de Disseny - UdGima.udg.edu/~sellares/EINF-ES2/Present1011/PresPatronsDisseny.pdf · Exemples: Classe Gorda Botó màgic Carrera d’obstacles ... manera que els canvis en](https://reader035.fdocuments.es/reader035/viewer/2022062602/5edf86cdad6a402d666ade07/html5/thumbnails/13.jpg)
BridgeBridge
Intenció: Desacobla una abstracció de la seva implementació per tal que puguin evolucionar independentment.
Motivació: Quan hi ha diferents implementacions per a una mateixa abstracció la herència dificulta la definicióde noves abstraccions i s'acobla el codi client amb una implementació concreta.
25
Bridge - EstructuraBridge - Estructura
26
![Page 14: Patrons de Disseny - UdGima.udg.edu/~sellares/EINF-ES2/Present1011/PresPatronsDisseny.pdf · Exemples: Classe Gorda Botó màgic Carrera d’obstacles ... manera que els canvis en](https://reader035.fdocuments.es/reader035/viewer/2022062602/5edf86cdad6a402d666ade07/html5/thumbnails/14.jpg)
Bridge - ExempleBridge - Exemple
27
DecoratorDecorator
Intenció: Permet afegir dinàmicament noves responsabilitats a un objecte, proporcionant una alternativa a la definició de subclasses.
Motivació: Quan necessitem no tenir successives classes que heretin d’una primera per incorporar una nova funcionalitat.
28
![Page 15: Patrons de Disseny - UdGima.udg.edu/~sellares/EINF-ES2/Present1011/PresPatronsDisseny.pdf · Exemples: Classe Gorda Botó màgic Carrera d’obstacles ... manera que els canvis en](https://reader035.fdocuments.es/reader035/viewer/2022062602/5edf86cdad6a402d666ade07/html5/thumbnails/15.jpg)
Decorator - EstructuraDecorator - Estructura
29
Decorator - ExempleDecorator - Exemple
30
![Page 16: Patrons de Disseny - UdGima.udg.edu/~sellares/EINF-ES2/Present1011/PresPatronsDisseny.pdf · Exemples: Classe Gorda Botó màgic Carrera d’obstacles ... manera que els canvis en](https://reader035.fdocuments.es/reader035/viewer/2022062602/5edf86cdad6a402d666ade07/html5/thumbnails/16.jpg)
ObserverObserver
Intenció: Permet definir dependències un-a-molts de manera que els canvis en un objecte es comuniquin als objectes que en depenen.
Motivació: Quan necessitem proporcionar diferents vistes de la mateixa informació, de manera que els canvis en una vista afecten a les altres, però les vistes no es coneixen entre si.
31
Observer - EstructuraObserver - Estructura
32
![Page 17: Patrons de Disseny - UdGima.udg.edu/~sellares/EINF-ES2/Present1011/PresPatronsDisseny.pdf · Exemples: Classe Gorda Botó màgic Carrera d’obstacles ... manera que els canvis en](https://reader035.fdocuments.es/reader035/viewer/2022062602/5edf86cdad6a402d666ade07/html5/thumbnails/17.jpg)
Observer - ExempleObserver - Exemple
33
CompositeComposite
Intenció: Permet representar estructures continent-contingut on els clients poden tractar de la mateixa forma als compostos i als individus.
Motivació: És necessari equipar una implementació amb diferents capes.
34
![Page 18: Patrons de Disseny - UdGima.udg.edu/~sellares/EINF-ES2/Present1011/PresPatronsDisseny.pdf · Exemples: Classe Gorda Botó màgic Carrera d’obstacles ... manera que els canvis en](https://reader035.fdocuments.es/reader035/viewer/2022062602/5edf86cdad6a402d666ade07/html5/thumbnails/18.jpg)
Composite - EstructuraComposite - Estructura
35
Composite - ExempleComposite - Exemple
36
![Page 19: Patrons de Disseny - UdGima.udg.edu/~sellares/EINF-ES2/Present1011/PresPatronsDisseny.pdf · Exemples: Classe Gorda Botó màgic Carrera d’obstacles ... manera que els canvis en](https://reader035.fdocuments.es/reader035/viewer/2022062602/5edf86cdad6a402d666ade07/html5/thumbnails/19.jpg)
CommandCommand
Intenció: Encapsular una petició o acció dins d’un objecte
Motivació: Les interfícies d’usuari hi ha infinitat de botons o menus, aquests no implementen les accions, ho fan objectes de capes inferiors. A més pot permetre desfer una acció.
37
Command - EstructuraCommand - Estructura
38
![Page 20: Patrons de Disseny - UdGima.udg.edu/~sellares/EINF-ES2/Present1011/PresPatronsDisseny.pdf · Exemples: Classe Gorda Botó màgic Carrera d’obstacles ... manera que els canvis en](https://reader035.fdocuments.es/reader035/viewer/2022062602/5edf86cdad6a402d666ade07/html5/thumbnails/20.jpg)
Command - ExempleCommand - Exemple
39
Command - Exemple (2)Command - Exemple (2)
40
![Page 21: Patrons de Disseny - UdGima.udg.edu/~sellares/EINF-ES2/Present1011/PresPatronsDisseny.pdf · Exemples: Classe Gorda Botó màgic Carrera d’obstacles ... manera que els canvis en](https://reader035.fdocuments.es/reader035/viewer/2022062602/5edf86cdad6a402d666ade07/html5/thumbnails/21.jpg)
Chain of ResponsabilityChain of Responsability
Intenció: Establir una cadena en un sistema de tal manera que faci la operació aquella la especialitzada.
Motivació: Crea una cadena de receptors, cadascun intenta resoldre la petició, sino la passa al següent. Redueix l’acoplament entre l’emisor i el receptor de la petició.
41
Chain of Responsability - EstructuraChain of Responsability - Estructura
42
![Page 22: Patrons de Disseny - UdGima.udg.edu/~sellares/EINF-ES2/Present1011/PresPatronsDisseny.pdf · Exemples: Classe Gorda Botó màgic Carrera d’obstacles ... manera que els canvis en](https://reader035.fdocuments.es/reader035/viewer/2022062602/5edf86cdad6a402d666ade07/html5/thumbnails/22.jpg)
Chain of Responsability - ExempleChain of Responsability - Exemple
43
Chain of Responsability – Exemple (2)Chain of Responsability – Exemple (2)
44
![Page 23: Patrons de Disseny - UdGima.udg.edu/~sellares/EINF-ES2/Present1011/PresPatronsDisseny.pdf · Exemples: Classe Gorda Botó màgic Carrera d’obstacles ... manera que els canvis en](https://reader035.fdocuments.es/reader035/viewer/2022062602/5edf86cdad6a402d666ade07/html5/thumbnails/23.jpg)
StateState
Intenció: Canviar facilment l’estat d’un objecte en temps d’execució.
Motivació: Quan volem que un objecte canvi el seu comportament en funció del seu estat, es planteja el problema de la complexitat del codi.
45
State - EstructuraState - Estructura
46
![Page 24: Patrons de Disseny - UdGima.udg.edu/~sellares/EINF-ES2/Present1011/PresPatronsDisseny.pdf · Exemples: Classe Gorda Botó màgic Carrera d’obstacles ... manera que els canvis en](https://reader035.fdocuments.es/reader035/viewer/2022062602/5edf86cdad6a402d666ade07/html5/thumbnails/24.jpg)
State - ExempleState - Exemple
47
State – Exemple (2)State – Exemple (2)
48
![Page 25: Patrons de Disseny - UdGima.udg.edu/~sellares/EINF-ES2/Present1011/PresPatronsDisseny.pdf · Exemples: Classe Gorda Botó màgic Carrera d’obstacles ... manera que els canvis en](https://reader035.fdocuments.es/reader035/viewer/2022062602/5edf86cdad6a402d666ade07/html5/thumbnails/25.jpg)
FaçadeFaçade
Intenció: Proporciona una interfície simplificada per un grup de subsistemes o per un sistema complex.
Motivació: Simplificar l’accés a un conjunt de classes proporcionant una única classe que tots utilitzen per comunicar-se amb el conjunt.
49
Façade - EstructuraFaçade - Estructura
50
![Page 26: Patrons de Disseny - UdGima.udg.edu/~sellares/EINF-ES2/Present1011/PresPatronsDisseny.pdf · Exemples: Classe Gorda Botó màgic Carrera d’obstacles ... manera que els canvis en](https://reader035.fdocuments.es/reader035/viewer/2022062602/5edf86cdad6a402d666ade07/html5/thumbnails/26.jpg)
Façade - ExempleFaçade - Exemple
51
Façade - Exemple (2)Façade - Exemple (2)
52
![Page 27: Patrons de Disseny - UdGima.udg.edu/~sellares/EINF-ES2/Present1011/PresPatronsDisseny.pdf · Exemples: Classe Gorda Botó màgic Carrera d’obstacles ... manera que els canvis en](https://reader035.fdocuments.es/reader035/viewer/2022062602/5edf86cdad6a402d666ade07/html5/thumbnails/27.jpg)
PrototypePrototype
Intenció: La seva finalitat és crear nous objectes duplicats, clonant una instància creada prèviament.
Motivació: Abstreure la lògica que decideix quin tipus d’objectes utilitzarà una aplicació, de la lògica que utilitzarà els objectes en la seva execució.
53
Prototype - EstructuraPrototype - Estructura
54
![Page 28: Patrons de Disseny - UdGima.udg.edu/~sellares/EINF-ES2/Present1011/PresPatronsDisseny.pdf · Exemples: Classe Gorda Botó màgic Carrera d’obstacles ... manera que els canvis en](https://reader035.fdocuments.es/reader035/viewer/2022062602/5edf86cdad6a402d666ade07/html5/thumbnails/28.jpg)
Prototype - Exemple Prototype - Exemple
55
Prototype - Exemple (2)Prototype - Exemple (2)
Disseny ambFactory
56
![Page 29: Patrons de Disseny - UdGima.udg.edu/~sellares/EINF-ES2/Present1011/PresPatronsDisseny.pdf · Exemples: Classe Gorda Botó màgic Carrera d’obstacles ... manera que els canvis en](https://reader035.fdocuments.es/reader035/viewer/2022062602/5edf86cdad6a402d666ade07/html5/thumbnails/29.jpg)
VisitorVisitor
Intenció: Representa una operació sobre els elements d’una estructura d’objectes.
Motivació: Un compilador representa els programes com arbres de sintaxis abstracte, sobre els quals executa operacions.
57
Visitor - EstructuraVisitor - Estructura
58
![Page 30: Patrons de Disseny - UdGima.udg.edu/~sellares/EINF-ES2/Present1011/PresPatronsDisseny.pdf · Exemples: Classe Gorda Botó màgic Carrera d’obstacles ... manera que els canvis en](https://reader035.fdocuments.es/reader035/viewer/2022062602/5edf86cdad6a402d666ade07/html5/thumbnails/30.jpg)
Visitor - ExempleVisitor - Exemple
59
Visitor - Exemple (2)Visitor - Exemple (2)
60
![Page 31: Patrons de Disseny - UdGima.udg.edu/~sellares/EINF-ES2/Present1011/PresPatronsDisseny.pdf · Exemples: Classe Gorda Botó màgic Carrera d’obstacles ... manera que els canvis en](https://reader035.fdocuments.es/reader035/viewer/2022062602/5edf86cdad6a402d666ade07/html5/thumbnails/31.jpg)
MediatorMediator
Intenció: Simplifica la comunicació entre objectes d’un sistema introduint un únic objecte que gestioni la distribució de missatges entre els altres.
Motivació: Quan molts objectes interactuen amb altres objectes, es pot formar una estructura complexa. Per evitar això tenim el patró Mediator que encapsula el comportament de tot el conjunt d’objecte en un de sol.
61
Mediator - EstructuraMediator - Estructura
62
![Page 32: Patrons de Disseny - UdGima.udg.edu/~sellares/EINF-ES2/Present1011/PresPatronsDisseny.pdf · Exemples: Classe Gorda Botó màgic Carrera d’obstacles ... manera que els canvis en](https://reader035.fdocuments.es/reader035/viewer/2022062602/5edf86cdad6a402d666ade07/html5/thumbnails/32.jpg)
Mediator - ExempleMediator - Exemple
63
ProxyProxy
Intenció: Proporciona un representant a un altre objecte per raons que poden ser l’accés, la velocitat o la seguretat.
Motivació: Retardar el cost de crear i inicialitzar un objecte fins que realment és necessari.
64
![Page 33: Patrons de Disseny - UdGima.udg.edu/~sellares/EINF-ES2/Present1011/PresPatronsDisseny.pdf · Exemples: Classe Gorda Botó màgic Carrera d’obstacles ... manera que els canvis en](https://reader035.fdocuments.es/reader035/viewer/2022062602/5edf86cdad6a402d666ade07/html5/thumbnails/33.jpg)
Proxy - EstructuraProxy - Estructura
65
Proxy - ExempleProxy - Exemple
66
![Page 34: Patrons de Disseny - UdGima.udg.edu/~sellares/EINF-ES2/Present1011/PresPatronsDisseny.pdf · Exemples: Classe Gorda Botó màgic Carrera d’obstacles ... manera que els canvis en](https://reader035.fdocuments.es/reader035/viewer/2022062602/5edf86cdad6a402d666ade07/html5/thumbnails/34.jpg)
ConclusionsConclusions
Els patrons de disseny són molt bons per aplicar a problemes que ens trobem de forma repetitiva.
Fan que un software sigui molt més simple, extensible i modificable.
L’ús abusiu dels patrons pot portar a problemes de manteniment del software.
67
BibliografiaBibliografia
http://patronesdediseno.blogspot.com
Software Achitecture Design Patterns in Java – Partha Kuchana
68
![Page 35: Patrons de Disseny - UdGima.udg.edu/~sellares/EINF-ES2/Present1011/PresPatronsDisseny.pdf · Exemples: Classe Gorda Botó màgic Carrera d’obstacles ... manera que els canvis en](https://reader035.fdocuments.es/reader035/viewer/2022062602/5edf86cdad6a402d666ade07/html5/thumbnails/35.jpg)
Xavier Pacheco
Lluís Clavaguera
Xavier Pacheco
Lluís Clavaguera
Patrons de DissenyPatrons de Disseny
69