Está en la página 1de 23

APOO2007/2008

Patrn State Patrn Bridge


Biel Massot Puigserver Edu Herraiz Aparicio

APOO2007/2008

Patrn State
Comportamiento de objetos

(A.K.A. Estados como objetos)

PatrnState Motivacin

Cambiarelcomportamientodependiendodelestado Cuandoqueremosqueunobjetocambiesu comportamiento,segncambiasuestado,sepresentael problemadelacomplejidaddecdigo.

PatrnState Motivacin

Encdigoestructurado

Variableparacadaestado Discriminacinporswitch Demasiadocdigo Difcilmantenimiento Posiblesincongruencias

Problemas:

switch($estado){ case'a': $result=a(); break; case'b': $result=b(); break; case'c': $result=c(); break; }

PatrnState Solucin

PatrnState Aplicabilidad

Seutilizacuandoelobjetotienediferentesestados ycambiasucomportamientoparacadaestado. Comomquinadeestados

PatrnState Aplicabilidad

Sielcomportamientodeunobjetodepende deunestado,ydebecambiarentiempode ejecucindependiendodelestado. Silasoperacionestienenlargassentencias conmltiplesramasquedependedelestado delobjeto.

PatrnState Participantes

Contexto(Context)

Defineinterfaz Mantieneunainstanciaconelestadoactual

Estado(State)

Defineinterfazparaelcomportamientoasociadoa undeterminadoestadodelContexto. Cadasubclaseimplementaelcomportamiento asociadoconunestadodelcontexto.

SubclasesdeEstadoConcreto(ConcreteState)

PatrnState Consecuencias

Localizaelcomportamientodependientedelestadoy dividedichocomportamientoendiferentesestados.

Lastransicionesentreestadosnoresideensentenciasifo swtichmonolticas,sinoquesereparteentrelassubclases.

Haceexplcitaslastransicionesentreestados.

Introducirobjetosseparadosparalosdiferentesestadoshace quelastransicionesseanmsexplcitas.

LosobjetosEstadopuedencompartirse.

PatrnState UsosConocidos

ConexinTCP

ClaseabstractaEstadoTCPyderivanlosdiferentesestados delaconexin.

Herramientasdedibujo

Claseabstractaherramientayderivanlosdiferentestiposde herramientas.

PatrnState Usosconocidos

PatrnState Nuestraimplementacin

APOO2007/2008

Patrn Bridge
Estructural Para objetos

(A.K.A. Manejador/Cuerpo)

PatrnBridge Motivacin

Desacoplarunaabstraccindesuimplementacin. LaHerencialigaunaimplementacinaunaabstraccin dificultandolamodificacin,extensinyreutilizacin. Estoimplicadosinconvenientes.

PatrnBridge Motivacin
Primer Inconveniente:

Problema!

PatrnBridge Motivacin
Segundo Inconveniente:

Hace que el cdigo sea dependiente de la plataforma.

new VentanaX Ventana (Abstracion)

+
VentanaX (implementacion)

PatrnBridge Motivacin
Solucin:
<-- BRIDGE -->

PatrnBridge Aplicabilidad

Sisequiereevitarunenlacepermanenteentreabstracciny implementador(Permitecambiarlaimplementacinentiempode ejecucin) Sisequiereevitarlaproliferacindeclasesheredadascomoseha vistoenlamotivacin,esindicativodelanecesidaddeseparar abstraccin/implementacin.

Sisequierecompartirunamismaimplementacionentrevarios clienes.

PatrnBridge EstructurayParticipantes
Abstraccin Abstraccin Redefinida Implementador Implementador Concreto

PatrnBridge Consecuencias

Desacoplalainterfazylaimplementacin Mejoralaextensibilidad Ocultadetallesdeimplementacinalosclientes

PatrnBridge UsosConocidos
ET++ framework para aplicaciones (Ejemplo anterior): - VentanaImp es un WindowsPort - Ventana es Window - De WindowPort derivan subclases concretas para cada plataforma: XWindowPort SunWindowPort ... El AppKit de NeXT usa un Bridge en la visualizacin de diferentes tipos de imgenes. El DOM de KDE3 esta basado en un bridge(Junto con otros patrones). Permite crear diferentes tipos de documentos usando la misma abstraccin.

PatrnBridge NuestraImplementacin

PatrnBridge

Fin...

También podría gustarte