patrons de disseny - udgima.udg.edu/~sellares/einf-es2/present1011/prespatronsdisseny.pdf ·...

35
Xavier Pacheco Lluís Clavaguera Patrons de Disseny 1 Índex Introducció Llista de patrons Conclusions Bibliografia 2

Upload: others

Post on 03-Jun-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Xavier Pacheco

Lluís Clavaguera

Xavier Pacheco

Lluís Clavaguera

Patrons de DissenyPatrons de Disseny

69