padroes de desenho

Download Padroes de desenho

Post on 09-Jul-2015

221 views

Category:

Technology

0 download

Embed Size (px)

DESCRIPTION

Essa apresentação explica alguns tipos de padrões de desenho ( padrões de projeto ) relacionando com exemplos mais concretos.

TRANSCRIPT

  • Padroes de Projeto

    Humberto C Marchezi

    22 de junho de 2012

    Humberto C Marchezi () Padroes de Projeto 22 de junho de 2012 1 / 42

  • Conteudo

    1 Conteudo

    2 Apresentacao

    3 Padroes de Projeto Estruturais

    4 Padroes de Projeto Comportamentais

    5 Padroes de Projeto Criacionais

    6 Padroes de Projeto de Sistemas Empresariais

    7 Referencias

    Humberto C Marchezi () Padroes de Projeto 22 de junho de 2012 2 / 42

  • Apresentacao

    Padroes de Projeto

    Solucao reutilizavel para um problema que ocorre de tempos emtempos

    // Como eu f a c o para i s o l a r a tecnologiaXPTO do meu s i s t e m a ??MapaLoteTecnologiaXPTO mapa = new MapaLoteTecnologiaXPTO ( . . . ) ;. . .t h i s . mapa . S e l e c i o n a r L o t e ( codLote ) ;. . .t h i s . t x t I n s c r i c a o L o t e . Text = . . . ;. . .

    Os padroes de projeto sao ideias provadas e testadas, prevenindo areinvencao da roda

    Promovem a melhoria da comunicacao entre desenvolvedores

    Muitos deles definem diferentes estrategias para se abstrair detalhesde implementacao

    Humberto C Marchezi () Padroes de Projeto 22 de junho de 2012 3 / 42

  • Apresentacao

    Padroes de Projeto

    Solucao reutilizavel para um problema que ocorre de tempos emtempos

    // Como eu f a c o para i s o l a r a tecnologiaXPTO do meu s i s t e m a ??MapaLoteTecnologiaXPTO mapa = new MapaLoteTecnologiaXPTO ( . . . ) ;. . .t h i s . mapa . S e l e c i o n a r L o t e ( codLote ) ;. . .t h i s . t x t I n s c r i c a o L o t e . Text = . . . ;. . .

    Os padroes de projeto sao ideias provadas e testadas, prevenindo areinvencao da roda

    Promovem a melhoria da comunicacao entre desenvolvedores

    Muitos deles definem diferentes estrategias para se abstrair detalhesde implementacao

    Humberto C Marchezi () Padroes de Projeto 22 de junho de 2012 3 / 42

  • Apresentacao

    Padroes de Projeto

    Solucao reutilizavel para um problema que ocorre de tempos emtempos

    // Como eu f a c o para i s o l a r a tecnologiaXPTO do meu s i s t e m a ??MapaLoteTecnologiaXPTO mapa = new MapaLoteTecnologiaXPTO ( . . . ) ;. . .t h i s . mapa . S e l e c i o n a r L o t e ( codLote ) ;. . .t h i s . t x t I n s c r i c a o L o t e . Text = . . . ;. . .

    Os padroes de projeto sao ideias provadas e testadas, prevenindo areinvencao da roda

    Promovem a melhoria da comunicacao entre desenvolvedores

    Muitos deles definem diferentes estrategias para se abstrair detalhesde implementacao

    Humberto C Marchezi () Padroes de Projeto 22 de junho de 2012 3 / 42

  • Apresentacao

    Padroes de Projeto

    Solucao reutilizavel para um problema que ocorre de tempos emtempos

    // Como eu f a c o para i s o l a r a tecnologiaXPTO do meu s i s t e m a ??MapaLoteTecnologiaXPTO mapa = new MapaLoteTecnologiaXPTO ( . . . ) ;. . .t h i s . mapa . S e l e c i o n a r L o t e ( codLote ) ;. . .t h i s . t x t I n s c r i c a o L o t e . Text = . . . ;. . .

    Os padroes de projeto sao ideias provadas e testadas, prevenindo areinvencao da roda

    Promovem a melhoria da comunicacao entre desenvolvedores

    Muitos deles definem diferentes estrategias para se abstrair detalhesde implementacao

    Humberto C Marchezi () Padroes de Projeto 22 de junho de 2012 3 / 42

  • Apresentacao

    Padroes de Projeto

    Solucao reutilizavel para um problema que ocorre de tempos emtempos

    // Como eu f a c o para i s o l a r a tecnologiaXPTO do meu s i s t e m a ??MapaLoteTecnologiaXPTO mapa = new MapaLoteTecnologiaXPTO ( . . . ) ;. . .t h i s . mapa . S e l e c i o n a r L o t e ( codLote ) ;. . .t h i s . t x t I n s c r i c a o L o t e . Text = . . . ;. . .

    Os padroes de projeto sao ideias provadas e testadas, prevenindo areinvencao da roda

    Promovem a melhoria da comunicacao entre desenvolvedores

    Muitos deles definem diferentes estrategias para se abstrair detalhesde implementacao

    Humberto C Marchezi () Padroes de Projeto 22 de junho de 2012 3 / 42

  • Apresentacao

    Padroes de projeto desta apresentacao estao agrupados em:

    Parte I - Padroes de Projeto Classicos

    Padroes de Projeto EstruturaisPadroes de Projeto ComportamentaisPadroes de Projeto Criacionais

    Parte II - Padroes de Projeto de Sistemas Empresariais

    Humberto C Marchezi () Padroes de Projeto 22 de junho de 2012 4 / 42

  • Padroes de Projeto Estruturais

    1 Conteudo

    2 Apresentacao

    3 Padroes de Projeto Estruturais

    4 Padroes de Projeto Comportamentais

    5 Padroes de Projeto Criacionais

    6 Padroes de Projeto de Sistemas Empresariais

    7 Referencias

    Humberto C Marchezi () Padroes de Projeto 22 de junho de 2012 5 / 42

  • Padroes de Projeto Estruturais

    Adaptador

    Proposito: Adequa as operacoes da classe adaptada para a classeadaptadora

    Figura: Adaptador

    Humberto C Marchezi () Padroes de Projeto 22 de junho de 2012 6 / 42

  • Padroes de Projeto Estruturais

    Adaptador

    // Exemplo de Usop u b l i c c l a s s SistemaX{

    p u b l i c v o i d EnviarSMS ( s t r i n g mensagem ){

    AdaptadorEnvioSMS envioSMS = new AdaptadorEnvioSMS ( ) ;envioSMS . E n v i a r ( 99999999 , mensagem ) ;

    }}

    // Exemplo de Adaptadoru s i n g M i c r o s o f t . WindowsMobile . PocketOut look ;p u b l i c c l a s s AdaptadorEnvioSMS{

    p u b l i c v o i d E n v i a r ( s t r i n g numero , s t r i n g mensagem ){

    SmsMessage sms = new SmsMessage ( ) ;sms . From = new R e c i p i e n t ( t h i s . NumeroOrigem ) ;sms . Body = mensagem ;sms . To . Add ( numero ) ;sms . Send ( ) ;

    }}

    Humberto C Marchezi () Padroes de Projeto 22 de junho de 2012 7 / 42

  • Padroes de Projeto Comportamentais

    1 Conteudo

    2 Apresentacao

    3 Padroes de Projeto Estruturais

    4 Padroes de Projeto Comportamentais

    5 Padroes de Projeto Criacionais

    6 Padroes de Projeto de Sistemas Empresariais

    7 Referencias

    Humberto C Marchezi () Padroes de Projeto 22 de junho de 2012 8 / 42

  • Padroes de Projeto Comportamentais

    Estrategia

    Proposito: O objetivo e encapsular um conjunto de algoritmos queresolvem o mesmo problema em classes separadas permitindo que umalgoritmo especfico possa ser selecionado facilmente atraves de umaclasse contexto. O padrao estrategia permite que os algoritmospossam variar independentemente dos sistemas que os utilizam.

    Figura: EstrategiaHumberto C Marchezi () Padroes de Projeto 22 de junho de 2012 9 / 42

  • Padroes de Projeto Comportamentais

    Estrategia

    // O a l g o r i t m o de c r i p t o g r a f i a v a r i a com o c o n t e x t oC o n t e x t o E s t r a t e g i a C r i p t o g r a f i a c o n t e x t o E s t r a t e g i a C r i p t o g r a f i a F r a c a =

    new C o n t e x t o E s t r a t e g i a C r i p t o g r a f i a ( new HMACSHA1EstrategiaCriptograf ia ( ) ) ;C o n t e x t o E s t r a t e g i a C r i p t o g r a f i a c o n t e x t o E s t r a t e g i a C r i p t o g r a f i a F o r t e =

    new C o n t e x t o E s t r a t e g i a C r i p t o g r a f i a ( new M D 5 E s t r a t e g i a C r i p t o g r a f i a ( ) ) ;. . .b y t e [ ] senhaEmBytes = C o n v e r t e P a r a B y t e s ( t h i s . t x t S e n h a . Text ) ;E s t r a t e g i a C r i p t o g r a d i a c r i p t o g r a f i a 1 = c o n t e x t o E s t r a t e g i a C r i p t o g r a f i a F o r t e . O b t e r E s t r a t e g i a ( ) ;b y t e [ ] s e n h a C r i p t o g r a d a 1 = c r i p t o g r a f i a 1 . C r i p t o g r a f a r ( senhaEmBytes ) ;. . .E s t r a t e g i a C r i p t o g r a f i a c r i p t o g r a f i a 2 = c o n t e x t o E s t r a t e g i a C r i p t o g r a f i a F r a c a . O b t e r E s t r a t e g i a ( ) ;b y t e [ ] s e n h a C r i p t o g r a d a 2 = c r i p t o g r a f i a 2 . C r i p t o g r a f a r ( senhaEmBytes ) ;. . .

    p u b l i c c l a s s C o n t e x t o E s t r a t e g i a C r i p t o g r a f i a{

    p r i v a t e E s t r a t e g i a C r i p t o g r a f i a e s t r a t e g i a ;p u b l i c C o n t e x t o E s t r a t e g i a C r i p t o g r a f i a ( E s t r a t e g i a C r i p t o g r a f i a e s t r a t e g i a ){

    t h i s . e s t r a t e g i a = e s t r a t e g i a ;}p u b l i c E s t r a t e g i a C r i p t o g r a f i a O b t e r E s t r a t e g i a ( ){

    r e t u r n e s t r a t e g i a ;}

    }

    p u b l i c i n t e r f a c e E s t r a t e g i a C r i p t o g r a f i a{

    b y t e [ ] C r i p t o g r a f a r ( b y t e [ ] dados ) ;}

    Humberto C Marchezi () Padroes de Projeto 22 de junho de 2012 10 / 42

  • Padroes de Projeto Comportamentais

    Estrategia

    p u b l i c c l a s s HMACSHA1EstrategiaCriptograf ia : E s t r a t e g i a C r i p t o g r a f i a{

    p u b l i c b y t e [ ] C r i p t o g r a f a r ( b y t e [ ] dados ){

    // Implementa c ao e s p e c f i c a para HMCA}

    }

    p u b l i c c l a s s M D 5 E s t r a t e g i a C r i p t o g r a f i a : E s t r a t e g i a C r i p t o g r a f i a{

    p u b l i c b y t e [ ] C r i p t o g r a f a r ( b y t e [ ] dados ){

    // Implementa c ao e s p e c f i c a para MD5}

    }

    Humberto C Marchezi () Padroes de Projeto 22 de junho de 2012 11 / 42

  • Padroes de Projeto Criacionais

    1 Conteudo

    2 Apresentacao

    3 Padroes de Projeto Estruturais

    4 Padroes de Projeto Comportamentais

    5 Padroes de Projeto Criacionais

    6 Padroes de Projeto de Sistemas Empresariais

    7 Referencias

    Humberto C Marchezi () Padroes de Projeto 22 de junho de 2012 12 / 42

  • Padroes de Projeto Criacionais

    Singleton

    Proposito: Uma classe que segue esse padrao, so consegue instanciarum objeto para toda a clas