Está en la página 1de 30

Desarrollorpidodeaplicaciones: PatronesdeDiseo

J.BaltasarGarcaPerezSchofield GrupoIMOSI1

Empleodepatrones

Lospatronesdediseoson,smplemente,en lenguajellano,manerasdehacerlascosas. Supropsitoesdoble:

Proporcionarunasolucinaunproblemaadaptablea variacionesdelmismoyescalableadiferentesparmetros. Porejemplo,unsoporteparaunacoleccindeobjetosque permitatamaostantodelordendedecenascomode miles. Proporcionarsolucionesrobustasybienconocidas.

Patronesdediseo=RAD?

Lospatronesdediseonosecorresponden exactamenteconelRAD. Sinembargo,proporcionansolucionesaproblemas dediseoyasobradamenteconocidos. Reducenlasnecesidadesderetroalimentacinenel ciclodevidaentrelafasedeimplementacinylade diseo,puestoquelassolucionesqueproponenson fcilmenteescalablesyadaptables.

Cundoutilizarpatrones?

Lospatronesdediseo,comosunombreindica,se aplicanenlafasedediseo.Estoimplicaque:

Lafasedeanlisis(quesnecesariohacer?)NOes cubiertaporlospatronesdediseoenabsoluto. Lafasedediseo(cmolovamosahacer?),escubierta enbuenaparteporestatcnica. Lasfasesdeimplementacinypruebasnoseven afectadasdirectamenteporelusodepatrones,sibiense beneficiandeellos(elsoftwareesmsfcildemodificary ampliar).

Tiposdepatrones

Creacin

AbstractFactory,FactoryMethod,Prototype Bridge,Facade,Composite,Proxy Chainofresponsibility,Iterator,Observer, TemplateMethod

Estructurales

Comportamiento

Referencias:

http://www.dofactory.com/patterns/ Gamma,etal.(2003).Patronesdediseo.AddisonWesley.

Enumeracindepatrones
Acontinuacin,seexponenvariospatrones. Sonunaseleccindelospatronesreales,ennmero mayordelexpuestoaqu.

Patronesdecreacin

AbstractFactory

Setratadepresentarunaseparacinentrelasclases delainterfazdeusuarioyelprogramaens. As,ponenfasisenlacreacindeobjetos.Setrata deque,enunmtododeunaclaseA,unalnea como:

B * ptrb = new B;

...creaunacoplamientoexcesivoentreambas clases. Estosesolucionamedianteunajerarquadeclases encargadasslodecrearobjetos(factoras).

AbstractFactory

Laclasecliente("Client"), seleccionalaclasefactora concretaenelmomentode lacreacin. Sloguardaunareferencia alaclasebaseabstractade ProductAyProductB. DeestaformaelClientey losproductosson totalmenteindependientes.

AbstractFactory

Elejemplotpicoparaestepatrneseldedos entornosdeventanasdistintos,conloscualesse deseasercompatiblealmismotiempo. As,elusodeestosdosGUI'ssonintercambiables: bastaseleccionarculdelasdosjerarquasdeclases sevanaemplear.

Prototype

Estepatrnconsisteenque,enciertas circunstanciasesposibletenerunamismaclaseque representardistintosobjetos,quesinembargo,es posiblesubclasificardealgunaforma. Laspiezasdeljuegodelasdamassonunbuen ejemplo.Cadapiezasediferenciadelasotrasensu posicinysucolor.Enlugardecrearlapiezadesde cero,puedesermssencilloclonarunobjeto PiezaDamaconunanuevaposicin.

Prototype

Elcliente("Client"), enlugardecrear objetos,clonaotros yacreados. Ntesequeclone() debeserunmtodo polimrfico,porlo quenoser necesarioconocer exctamenteal objeto.

Singleton

Estepatrnaseguraqueexisteunayslouna instanciadeunaclasedeterminada. Estoestpicocuandounrecursocomn,como podraser,porejemplo,lamemoria,estratadoalo largodetodoelprograma.Elrecursoseencapsula enunaclase,peroesnecesarioasegurarsedeque slohabrunobjetodeesaclase.

Singleton

Obsrvesequeel constructores privado. Elmtodo


instance()esel

quedevuelvela nicainstancia deestaclase,ola creasinoexiste.

Patronesestructurales

Adapter

Encapsulaunaclase,demaneraqueesposible normalizarsuinterfazparasuusoconotrasclases. Elproblemasuelepresentarsecuandoenuna aplicacinsereutilizanclasesquenotienen exactamentelainterfazrequerida. Laclaseadaptadoraseinterponeentreelclienteyla clasereutilizada.Laclaseadaptadorapresentala interfazqueesperalaaplicacin,ysecomunicacon laclasereutilizada,"traduciendo"losmensajes.

Adapter

Elcliente ("Client"),se comunicaconla claseadaptadora queactade intermediaria,en lugardeconla claseque realmente proporcionala funcionalidad ("Adaptee").

Bridge

Elpuentepermiteseparardosaspectosdistintosde unajerarquadeclases. Bsicamente,mientrasunajerarquaimplementala funcionalidadreal,la(s)otra(s)representandiversos aspectos,comorepresentacinendiferentesmedios ...etc.

Bridge

Enelejemplo, existenvarias implementaciones distintasparaun mtododado (ConcreteImplemen torAy ConcreteImplement orB). Setratadeseparar diferentesaspectos.

Bridge

Unejemplobastantetpicoseraeldesepararel aspectodepersistenciadeunajerarquadeclases. Mientrasenlapropiajerarquasloseimplementa lafuncionalidaddeestasclases,enotra, relacionada,comoyahemosvisto,seimplementasu representacinendisco. Enalgnmomentosernecesarioenlazarlaclase adecuada,demaneraquesernecesariocrearla clasedepersistenciaadecuadaparacadaunadelas casedefuncionalidad.

Facade

Tpicamente,undiseoadecuadonosllevarauna factorizacinenclasesmsalldelaestrictamente necesariaparaunasistemadeterminado. Enesecaso,esposibleconstruirunaclasefacade, (fachada),quetengalainterfazesperadayseael querealmentesecomuniqueconlaestructurade clasesreal,cuyasinterfacespuedenvariar.

Laclasefachada seinterpone entreelcliente (nomostrado)y elsubsistema queproporcione lafuncionalidad deseada. Facade simplificala interfazdel subsistema.

Facade

Patronesdecomportamiento

Chainofresponsibility

Enmltiplesocasiones,unclientenecesitaquese realiceunafuncin,peroonoconocealservidor concretodeesafuncinoesconvenientequenolo conozcaparaevitarungranacoplamientoentre clienteyservidor. Lapeticinselanzaaunacadenadeobjetosquese "lavanpasando"hastaqueunodelosobjetosla maneja.

Chainofresponsibility

Elcliente ("Client"),conoce aungestorquees elquelanzala peticinala cadenahastaque alguienlarecoge.

Chainofresponsibility

Unejemplotpicopodraserellanzaruntrabajode impresin.Elclientenosabesiquieraqu impresorasestninstaladasenelsistema, smplementelanzaeltrabajoalacadenadeobjetos querepresentanalasimpresoras.Cadaunodeellos lodejapasar,hastaquealguno,finalmentelo ejecuta. Hayundesacoplamientoevidenteentreelobjeto quelanzaeltrabajo(elcliente)yelquelorealiza (servidor).

Iterator

Esunpatrnampliamanteutilizado. Setratadetenervariascoleccionesdeobjetos (contenedorescomolista,vector...),quepuedenser recorridasutilizandolamismaabstraccin:el iterador. Permiterecorrercadaelementodeuncontenedor secuencialmente. EsampliamenteutilizadoenlaSTLdeC++.

Iterator

Elcliente ("Client"),puede inclusoutilizarun iteradorsinsaber sobrequ coleccinconcreta seest ejecutando.

Observer

Setratadepodernotificardeuncambioavarios objetos. Alfinyalcabo,esunamaneradeestableceruna relacindeunoamuchos. Unejemploclaropuedeencontrarsecuando, teniendoabiertasdosventanasdeexploracinsobre unmismodirectorio,desdeunadeellasborramos unarchivo,ylasegundaseactualiza automticamente.Podrandefinirseambos exploradorescomodosobservadoresdelsistemade ficheros.

Observer

Encada observador puedetomarse unaaccin distintasegn sehaya producidoun cambio.

También podría gustarte