Bridge – Design Pattern
Rômulo Jales
<romulo@romulojales.com>
O Que é?
v GoF pattern
v Padrão Estrutural
v Também conhecido por Handle / Body
18/09/13 @LES/PUC-Rio 2
Propósito
v Define uma estrutura independente da
implementação para limitar o
acoplamento.
Não use subclasses a não ser p...
Motivação
v Uso herança tende a tornar as coisas mais
difíceis.
v Separar a implementação da abstração.
18/09/13 @LES/PU...
Aplicação
v Evita um vinculo permanente
v Abstrações e implementações extensíveis
por subclasses
v Mudanças não devem t...
Estrutura
18/09/13 @LES/PUC-Rio 6
http://oreboladodeturing.files.wordpress.com/2011/08/patternbridge1.jpg
Participantes
v Abstrações (bridge)
v Implementação (classes concretas)
18/09/13 @LES/PUC-Rio 7
Colaborações
v A classe abstrata repassa a requisição
para o implementador
18/09/13 @LES/PUC-Rio 8
Consequências
v Desacopla a interface
v Melhora a extensibilidade
v Esconde detalhes de implementação do
cliente
18/09/...
Exemplo
class Abstrata(object):
def funcao_abs(self, arg):
print arg
def funcao_repassada_ao_bridge(self, arg):
ponto = se...
class Ponte(object):
def funcao_assumida(self, arg):
raise NotImplemented
class ImplementadorSTR(Ponte):
def funcao_assumi...
class ClasseCliente(Abstrata):
def minha_funcao(self):
return "Oi sou do cliente"
c = ClasseCliente()
print c.minha_funcao...
Exemplo (mais prático...)
v Classe models do Django
v Abstrai a persistência em banco
v Evoca os implementadores para r...
Referências
v Design Patterns: Elements of Reusable
Object-Oriented Software
18/09/13 @LES/PUC-Rio 14
Próximos SlideShares
Carregando em…5
×

Bridge GoF Patern

398 visualizações

Publicada em

Apresentação sobre o parttern bridge para a disciplina da pós-graduação da PUC - Projeto de Sistema de Software.

Além da especificação do pattern tem um exemplo em python do padrão.

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
398
No SlideShare
0
A partir de incorporações
0
Número de incorporações
4
Ações
Compartilhamentos
0
Downloads
7
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Bridge GoF Patern

  1. 1. Bridge – Design Pattern Rômulo Jales <romulo@romulojales.com>
  2. 2. O Que é? v GoF pattern v Padrão Estrutural v Também conhecido por Handle / Body 18/09/13 @LES/PUC-Rio 2
  3. 3. Propósito v Define uma estrutura independente da implementação para limitar o acoplamento. Não use subclasses a não ser para fazer coisas diferentes! 18/09/13 @LES/PUC-Rio 3
  4. 4. Motivação v Uso herança tende a tornar as coisas mais difíceis. v Separar a implementação da abstração. 18/09/13 @LES/PUC-Rio 4
  5. 5. Aplicação v Evita um vinculo permanente v Abstrações e implementações extensíveis por subclasses v Mudanças não devem ter impactos nos clientes v Proliferação de classes v Compartilhar a implementação entre objetos 18/09/13 @LES/PUC-Rio 5
  6. 6. Estrutura 18/09/13 @LES/PUC-Rio 6 http://oreboladodeturing.files.wordpress.com/2011/08/patternbridge1.jpg
  7. 7. Participantes v Abstrações (bridge) v Implementação (classes concretas) 18/09/13 @LES/PUC-Rio 7
  8. 8. Colaborações v A classe abstrata repassa a requisição para o implementador 18/09/13 @LES/PUC-Rio 8
  9. 9. Consequências v Desacopla a interface v Melhora a extensibilidade v Esconde detalhes de implementação do cliente 18/09/13 @LES/PUC-Rio 9
  10. 10. Exemplo class Abstrata(object): def funcao_abs(self, arg): print arg def funcao_repassada_ao_bridge(self, arg): ponto = self.get_ponte(arg) ponto.funcao_assumida(arg) def get_ponte(self, arg): if type(arg) == str: return ImplementadorSTR() elif type(arg) == int: return ImplementadorINT() 18/09/13 @LES/PUC-Rio 10
  11. 11. class Ponte(object): def funcao_assumida(self, arg): raise NotImplemented class ImplementadorSTR(Ponte): def funcao_assumida(self, arg): print "oi sou uma string: " + arg class ImplementadorINT(Ponte): def funcao_assumida(self, arg): print "oi sou um inteiro: " + arg 18/09/13 @LES/PUC-Rio 11
  12. 12. class ClasseCliente(Abstrata): def minha_funcao(self): return "Oi sou do cliente" c = ClasseCliente() print c.minha_funcao() print c.funcao_abs(123) print c.funcao_repassada_ao_bridge(1) print c.funcao_repassada_ao_bridge("1") 18/09/13 @LES/PUC-Rio 12
  13. 13. Exemplo (mais prático...) v Classe models do Django v Abstrai a persistência em banco v Evoca os implementadores para realizar comunicação com banco v A classe sabe quem evocar v Cliente não sabe como é feita as operações 18/09/13 @LES/PUC-Rio 13
  14. 14. Referências v Design Patterns: Elements of Reusable Object-Oriented Software 18/09/13 @LES/PUC-Rio 14

×