Padrão Abstract Factory

Slides:



Advertisements
Apresentações semelhantes
Soluções elegantes para problemas recorrentes
Advertisements

I- Introdução A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados.
Carlos Roberto Marques Junior
Requisitos de Software
Padrão de Projeto Iterator
UML no CICLO de DESENVOLVIMENTO
Projeto de Sistemas de Software
Design Patterns Builder Pattern
Projeto de Sistemas de Software
Projeto de Sistemas de Software
Elisabeth Suescún Leandra Mara da Silva
Factory Method Projeto de Sistemas de Software
Projeto de Sistemas de Software Kelly Leal Leandra Mara da Silva
Padrão Bridge (Handle/Body)
1 Builder Padrões de projeto Projeto de Sistemas de Software Aleksander Bruno Gadelha Setembro, 2008.
Projeto de Sistemas de Software Hazel, Juliana e Luana
Projeto de Sistemas de Software Fernando de Freitas Silva
Projeto de Sistemas de Software
Projeto de Sistemas de Software Fernando de Freitas Silva
Projeto de Sistemas de Software(PSS) Baldoino F. dos S. Neto
Projeto de Sistemas de Software Sérgio Luiz Ruivace Cerqueira
Carlos R. M. Junior Eduardo Motta
Strategy Projeto de Sistemas de Software
Padrões de Projeto Prototype.
Padrões de Projeto Adapter.
Abstract Factory – Gustavo Lopes Mourad.
Padrão de Projeto Composite
Template Method Projeto de Sistemas de Software. © LES/PUC-Rio Template Method Motivação.
Projeto de Sistemas de Software Leandra Mara da Silva
UML Diagrama de Classes elementos básicos. Contexto Os diagramas de classes fazem parte do da visão estática da UML. Os elemento desta visão são conceitos.
Abstract Factory Intenção: fornecer uma interface comum para a criação de famílias de objetos relacionados ou dependentes, sem especificar suas classes.
Padrões GoF - Strategy.
Padrões GoF – Factory Method
Padrões - introdução O que é um padrão?
MedEl: Uma solução de E-Learning utilizando tecnologia Microsoft ASP
Trabalho de Conclusão de Curso Moisés Alves Carneiro Filho
CURSO DE ESPECIALIZAÇÃO PARTE 4: PADRÕES FACTORY E DAO
I- Introdução A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados.
Padrões de projeto detalhados Factory Method, Abstract Factory
Design Patterns Bridge
Programação Orientada à Objetos
Interfaces e classes abstratas. Conceitos de Orientação a Objeto.
Padrões de Projeto.
AULA 04 - POO. História 02 (usar interface): De acordo com o tipo do cliente implementar um método para dar desconto. Nesse processo está envolvido o.
Introdução Padrões de Projeto
Padrão de Projeto Iterator Projeto de Sistemas de Software Thiago Pinheiro de Araújo.
Trabalho Final de Padrões de Projeto
Classes Abstratas e Interfaces GX – Aula05 1.
Padrões de Projeto Abstract Factory.
Factory.
© 2007 by Pearson Education ©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 1 Reuso de Software.
Abstract Factory Pattern Algumas aplicações precisam criar objetos de classes que podem mudar ex: elementos de um sistema GUI. –Diferentes padrões precisam.
April 05 Prof. Ismael H. F. Santos - 1 Módulo III Padrões GOF: AbstractMethod Professores Eduardo Bezerra –
Design Patterns A adoção dos padrões terá um efeito profundo e duradouro sobre a forma de escrevermos programas Ward Cunningham e Ralph Johnson.
1 Baseado em whitepapers/eclipse-overview.pdf Nelson Lago IME/USP 04/2003 A Plataforma Eclipse.
Padrões de Projeto de Software Orientado a Objetos
1 Padrões: Bridge (p. 151) Objetivo: separar uma abstração de sua implementação Sinônimos: Handle/Body.
1 Padrões: Composite (p. 163) Objetivo: compor objetos em estruturas de árvores para representar relações de parte/todo. “Composite” permite tratar objetos.
Padrão Composite Definição
Jobson Ronan Padrões GoF Jobson Ronan
Linguagens Orientadas a Eventos
Módulo II Capítulo 1: Orientação a Objetos
Padrões de Projetos Professora Lucélia. Conceitos É uma solução conhecida para um problema comum São técnicas que nos dão uma boa solução para determinados.
Design Patterns Mediator Projeto de Sistemas de Software Kelly Leal.
Aula 7 – Padrão Abstract Factory
Padrões Criacionais Abstraem o processo de criação de instâncias (objetos), oferecendo flexibilidade no que é criado, por quem, como e quando.
Padrões de Projeto de Criação Padrões de Projeto Orientados a Objetos Prof a. Danielle Martin Universidade de Mogi das Cruzes.
1 Introdução aos Padrões de Projetos (na prática) Créditos: Lúbia Vinhas Hazel Carvalho Crato Adaptações: Prof. Nécio de Lima Veras.
1 Padrões de Projeto de Software Orientado a Objetos Programação Orientada a Objetos Prof. Fabio Kon - IME/USP.
Padrões de Projeto Aula 12 – Padrão Adapter. PADRÃO ADAPTER Soluções simples para problemas reais! 2.
Transcrição da apresentação:

Padrão Abstract Factory Projeto de Sistemas de Software Hazel Carvalho Crato

Sumário Abstract Factory Propósito Motivação Aplicabilidade Estrutura Participantes Colaborações Conseqüências Exemplo de Código © LES/PUC-Rio

Abstract Factory É classificado como um padrão de criação, também conhecido como Kit. Propósito Prover uma interface para criar famílias de objetos relacionados ou dependentes sem especificar suas classes concretas. © LES/PUC-Rio

Motivação Exemplo 1: © LES/PUC-Rio

Motivação Exemplo 2: © LES/PUC-Rio

Motivação Diferentes padrões look-and-feel definem diferentes aparências (look) e comportamentos (feel) para um widget de uma interface de usuário. Exemplos: barras de rolagem, janelas, botões etc. Para ser portável através dos padrões look-and-feel, uma aplicação não deve instanciar os widgets diretamente de suas classes concretas para uma aparência ou comportamento particular. Para facilitar a alteração da aparência e do comportamento futuramente, defina uma classe abstrata GUIFactory que declara uma interface para criar cada tipo de widget básico. Defina ainda uma interface para cada tipo de widget e subclasses concretas que implementam widgets para um específico padrão look-and-feel. Different look-and-feel standards define different appearances (look) and behaviors (feel) for user interface widgets like scroll bars, windows, and buttons. To be portable across look-and-feel standards, an application should not instantiate its user interface widgets directly from their concrete classes for a particular look and feel. To make it easier to change the look and feel later, define an abstract WidgetFactory class that declares an interface for creating each basic kind of widget. There's also an abstract class for each kind of widget, and concrete subclasses implement widgets for specific look-and-feel standards. © LES/PUC-Rio

Motivação A interface de GUIFactory possui uma operação que retorna um novo widget concreto para cada widget abstrato. Há uma sub-classe concreta de GUIFactory para cada padrão look-and-feel. Cada sub-classe implementa as operações para criar o widget apropriado para o respectivo look-and-feel. Clientes criam os widgets apenas através da GUIFactory sem saber quem são widgets concretos para um específico look-and-feel. Uma GUIFactory reforça as dependências entre as classes concretas de widgets. WidgetFactory's interface has an operation that returns a new widget object for each abstract widget class. There is a concrete subclass of WidgetFactory for each look-and-feel standard. Each subclass implements the operations to create the appropriate widget for the look and feel. Clients create widgets solely through the WidgetFactory interface without knowing the concrete widget subclasses for a particular look and feel. A WidgetFactory enforces dependencies between the concrete widget classes. © LES/PUC-Rio

Aplicabilidade O padrão deve ser usado quando: Um sistema deve ser implementado independente de como os produtos são criados, compostos e representados. Um sistema deve ser configurado com uma das múltiplas famílias de produtos. Uma familia de um produto relacionado é projetada para ser utilizada junta, e faz-se necessário o reforço dessa restriçao. Deseja-se prover uma biblioteca de classes de produtos e deseja-se revelar apenas as suas interfaces, mas não suas implementações. a system should be independent of how its products are created, composed, and represented. a system should be configured with one of multiple families of products. a family of related product objects is designed to be used together, and you need to enforce this constraint. you want to provide a class library of products, and you want to reveal just their interfaces, not their implementations. © LES/PUC-Rio

Estrutura © LES/PUC-Rio

Participantes AbstractFactory ConcreteFactory AbstractProduct Declara uma interface para operações que criam produtos abstratos. ConcreteFactory Implementa as operações para criar produtos concretos. AbstractProduct Declara uma interface para um tipo de produto. ConcreteProduct Define um produto a ser criado pela fábrica concreta correspondente. Implementa a interface AbstractProduct. Client Usa apenas interfaces declaradas pelas classes AbstractFactory e AbstractProduct. © LES/PUC-Rio

Colaborações Normalmente uma única instância da classe ConcreteFactory é criada em tempo de execução. AbstractFactory delega a criação de produtos concretos para a respectiva subclasse ConcreteFactory. A classe ConcreteFactory cria produtos que possuem uma implementação particular, por exemplo: todos os widgets de uma WinFactory concreta. Normally, a single instance of a ConcreteFactory class is created at run-time. AbstractFactory defers creation of product objects to its ConcreteFactory subclass. The concrete factory creates product objects having a particular implementation. © LES/PUC-Rio

Conseqüências Vantagens Desvantagem Abstract Factory isola classes concretas. Facilita o intercâmbio de famílias de produtos. Promove consistência entre produtos. Desvantagem Suporte a novos tipos de produtos é dicífil. It isolates concrete classes. Abstract Factory helps you control the classes of objects that an application creates by isolating clients from implementation classes. Clients manipulate instances through their abstract interfaces. It makes exchanging product families easy. Since the class of a concrete factory appears only once in an application, the application can use different product configurations simply by changing the concrete factory. It promotes consistency among products. Abstract Factory makes it easy to enforce that an application uses objects designed to work together from only one family at a time. Supporting new kinds of products is difficult. Supporting new kinds of products requires extending the factory interface, which involves changing the AbstractFactory class and all its subclasses. © LES/PUC-Rio

Exemplo de Código

Estrutura © LES/PUC-Rio

Abstract Factory © LES/PUC-Rio

Concrete Factory © LES/PUC-Rio

Abstract Product © LES/PUC-Rio

Concrete Product © LES/PUC-Rio

Transfer Object © LES/PUC-Rio

Client © LES/PUC-Rio

Perguntas?