Post on 03-Jun-2020
transcript
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
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
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
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
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
Strategy - EstructuraStrategy - Estructura
11
Strategy - ExempleStrategy - Exemple
12
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
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
Abstract Factory - EstructuraAbstract Factory - Estructura
17
Abstract Factory - ExempleAbstract Factory - Exemple
18
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
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
Adapter - EstructuraAdapter - Estructura
23
Adapter - ExempleAdapter - Exemple
24
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
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
Decorator - EstructuraDecorator - Estructura
29
Decorator - ExempleDecorator - Exemple
30
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
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
Composite - EstructuraComposite - Estructura
35
Composite - ExempleComposite - Exemple
36
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
Command - ExempleCommand - Exemple
39
Command - Exemple (2)Command - Exemple (2)
40
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
Chain of Responsability - ExempleChain of Responsability - Exemple
43
Chain of Responsability – Exemple (2)Chain of Responsability – Exemple (2)
44
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
State - ExempleState - Exemple
47
State – Exemple (2)State – Exemple (2)
48
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
Façade - ExempleFaçade - Exemple
51
Façade - Exemple (2)Façade - Exemple (2)
52
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
Prototype - Exemple Prototype - Exemple
55
Prototype - Exemple (2)Prototype - Exemple (2)
Disseny ambFactory
56
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
Visitor - ExempleVisitor - Exemple
59
Visitor - Exemple (2)Visitor - Exemple (2)
60
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
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
Proxy - EstructuraProxy - Estructura
65
Proxy - ExempleProxy - Exemple
66
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
Xavier Pacheco
Lluís Clavaguera
Xavier Pacheco
Lluís Clavaguera
Patrons de DissenyPatrons de Disseny
69