padrão bridger
DESCRIPTION
Apresentação de complemento da diciplina Padrão de projetos em Tecnologia em Analise e Desenvolvimento de Sistemas -IFAMTRANSCRIPT
PADÃO DE PROJETO BRIDGE
GoF – Estrutural de Objetos
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO AMAZONAS
CURSO DE TECNOLOGIA EM ANALISE E DESENVOLVIMENTO DE SISTEMAS
PADÃO DE PROJETO BRIDGE
Prof.: Jorge Abílio
Aluno: Sérgio Ademir Rocha do Carmo
Setembro /2015
Padrão Estrutural Bridge
Preocupa – se com a forma como classes e objetos são compostos para formar estruturas maiores, classes utilizam herança para compor interfaces ou implementações. O resultado esperado é a combinação das propriedades de suas classes ancestrais. Útil para fazer bibliotecas de classes desenvolvidas independentemente a trabalharem juntas.
Padrão de Projeto Bridge
IntençãoDesacoplar uma abstração da sua implementação, de modo que as duas possam variarindependentemente.Conhecido Handle / Body (movimento circular da forma )MotivaçãoSeparar uma abstração de sua representação, de forma que ambos possam variar e produzir tipos de objetos diferentes.Aplicabilidade Evitar um vínculo permanente entre uma abstração e sua implementação. Implementação deve ser selecionada ou alterada em tempo de execução;Permite combinar as diferentes abstrações e implementações e estendê-las independentemente;
VANTAGENS
Detalhes de implementação totalmente inacessíveis aos clientes. Eliminação de dependências em tempo de compilação das implementações. Implementação de abstração pode ser configurada em tempo de execução.
Permite que hierarquias de abstrações (sub-classes de MotorElétrico ou
MotorHidrogênio ) e hierarquias de implementações variem de forma
Independente de diversos tipos de forma, ou seja, no problema proposto ligar, acelerar e desligar diversos tipos de motores. Por diversos elementos de motores
diferentes e corresponder a diversas bibliotecas distintas.
Estrutura
Entender o que é abstração e o que é uma implementação. Interpretar a abstração como sendo a interface ou classe abstrata e as
implementações como classes concretas que implementam a
interface ou estendem a classe abstrata.
Estrutura Oficial
Abstraction
operation ()
Implementor
operationImpl()
RefinedAbstractionConcreteImplementorA
operationImpl()
ConcreteImplementorB
operationImpl ()
Client << usa >>
Problema a Ser Resolvido
Motor ElétricoMotor a Hidrogênio
Criar um sistema para Ligar, Acelerar e Desligar um motor elétricos e outro motor hidrogênio. Eu tenho um classe abstrata chamada MOTOR. Eu posso ligar , acelerar e desligar. Vamos supor que o comportamento de ligar, acelerar e desligar desses motores sejam totalmente diferentes um do outro. Então podemos resolver isso através de herança com baixo acoplamento. Faço MotorEletrico e Motor Explosão herdar da classe Motor e Implemento os métodos de cada motor.
Diagrama de Classe
Os personagens desse padrão são:
Os personagens desse padrão são:
Abstraction (Motor)
Define a interface de um determinado tipo de objeto.
RefinedAbstraction (MotorElétrico, MotorHidrogênio)
Uma implementação particular do Abstraction que delega o
Implementador a realização de determindas tarefas.
Implementor (Implementador classe concreta ImplMotorEletrico)
Define a interface dos objetos que serão acionados pelos Abstractions.
ConcreteImplementor (classe concreta, ImplMotorEletrico,
ImplMotorHidrogenio) uma implementação específica do Implementor
Client
Interage com as Abstractions.
Diagrama de Classe Bluej
Implementação Código Classe Mãe A implementação do Padrão Bridge ilustra a Ponte entre a classe abstrata
Motor, MotorElétrico, MotorHidrogênio a através de interface Implementador, ImplMotorEletrico, ImplMotorHidrogenio. Não existe necessária dependência entre elas.
Implementação Código Classe Abstrata
ImplMotorEletrico por Herança
Criando Objeto MotorEletrico
Testando Objeto
Conclusão
O padrão Bridge portanto, propõe uma solução para o problema proposto de forma lógica com uma classe abstrata (Motor).
Dividindo melhor as responsabilidades, nas Implementações lógicas dos ImplMotorEletrico e ImplMotorHidrogenio, para ligar, acelerar e desligar criando objetos diferentes para cada motor em tempo de execução.
Assim separa-se nesse problema a abstração de sua representação onde a forma preocupa-se como classes e objetos são compostos para formar estruturas maiores com baixo acoplamento.
REFERÊNCIAS
GAMMA, Erich.et.al. Padrão de Projeto Soluções Reutilizáveis de Software Orientado a
Objetos.5.ed. Porto Alegre: Bookman. 2000.
Laboratório Java com Testes, JFS e Design Patterns. Disponivel em:<https://www.caelum.com.br>.
Acesso em: 15/09/2015.
BRIZENO, Marcos. Design Patterns. Disponivel em:
<https://brizeno.wordpress.com/2011/09/17/mao na massa factory method/>. Acesso em 11/08/2015.