A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Padrão Bridge Projeto de Sistemas de Software(PSS) Marcio D. M. Santos.

Apresentações semelhantes


Apresentação em tema: "Padrão Bridge Projeto de Sistemas de Software(PSS) Marcio D. M. Santos."— Transcrição da apresentação:

1 Padrão Bridge Projeto de Sistemas de Software(PSS) Marcio D. M. Santos

2 Propósito Desacoplar a Abstração da Implementação © LES/PUC-Rio

3 Motivação Algumas vezes uma abstração pode ter várias implementações; Permitir que um programa rode em outra plataforma;

4 Aplicabilidade Deseja-se evitar acoplamento permanente entre a abstração e a implementação. Comumente usando em sistemas web –Cliente > Facade(Abstração)> Dao(Implementação) © LES/PUC-Rio

5 Aplicabilidade Softwares com múltiplas apresentações –Interface Texto –Interface Gráfica Exemplo –YAST –Borland C++

6 Estrutura © LES/PUC-Rio

7 Participantes Abstraction –Define a interface da abstração –Mantém uma referência para a implementação RefinedAbstraction –Estende a abstração Implementor –Define a interface para a implementação, que não possui nenhuma relação com a abstração ConcreteImplementor –Define a implementação © LES/PUC-Rio

8 Colaborações © LES/PUC-Rio A abstração invoca os métodos da interface da implementação

9 Conseqüências Desacoplamento entre a Abstração e a Implementação Melhora a extensibilidade Esconde detalhes de implementação do cliente © LES/PUC-Rio

10 Paterns relacionados Adapter Abstract Factory © LES/PUC-Rio

11 Exemplo /** "Implementor" */ interface DrawingAPI { public void drawCircle(double x, double y, double radius); } © LES/PUC-Rio

12 Exemplo /** "ConcreteImplementor" 1/2 */ class DrawingAPI1 implements DrawingAPI { public void drawCircle(double x, double y, double radius) { System.out.printf("API1.circle at %f:%f radius %f\n", x, y, radius); } © LES/PUC-Rio

13 Exemplo class DrawingAPI2 implements DrawingAPI { public void drawCircle(double x, double y, double radius) { System.out.printf("API2.circle at %f:%f radius %f\n", x, y, radius); } © LES/PUC-Rio

14 Exemplo /** "Abstraction" */ interface Shape { public void draw(); // low-level public void resizeByPercentage(double pct); // high-level } © LES/PUC-Rio

15 Exemplo /** "Refined Abstraction" */ class CircleShape implements Shape { private double x, y, radius; private DrawingAPI drawingAPI; public CircleShape(double x, double y, double radius, DrawingAPI drawingAPI) { this.x = x; this.y = y; this.radius = radius; this.drawingAPI = drawingAPI; } // low-level i.e. Implementation specific public void draw() { drawingAPI.drawCircle(x, y, radius); } // high-level i.e. Abstraction specific public void resizeByPercentage(double pct) { radius *= pct; } } © LES/PUC-Rio


Carregar ppt "Padrão Bridge Projeto de Sistemas de Software(PSS) Marcio D. M. Santos."

Apresentações semelhantes


Anúncios Google