O documento descreve o padrão de projeto Bridge. Este padrão separa abstrações e implementações para evitar um acoplamento rígido entre elas, permitindo que ambas variem independentemente. O padrão define uma estrutura que limita o acoplamento entre classes abstratas e suas implementações concretas.
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. 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. 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. 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
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. 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. 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