Abstract Factory. Edeyson Andrade Gomes

Documentos relacionados
Abstract Factory. Prover uma interface para criar uma família de objetos relacionados ou dependentes sem especificar suas classes concretas

Padrões de Projeto de Software

INF011 Padrões de Projeto. 03 Abstract Factory

Padrões de Projeto. Abstract Factory

Factory Method. Edeyson Andrade Gomes

Creational Patterns Factory method

Padrões de Projeto de Software Orientado a Objetos

INF011 Padrões de Projeto. 10 Bridge

Padrões de Projeto. Parte 1. Prof. Fellipe Aleixo

Padrões GoF Strategy, Observer, Singleton, Abstract Factory e outros...

Padrões de Projeto. Padrões de Projeto. Além dos 23 Padrões GoF. Os 23 Padrões de Projeto. Documentação de um Padrão. Classificação dos Padrões

Factory Pattern. SISMO - Sistemas e Mobilidade Junho de Departamento de Informática / UFMA

Singleton e Adapter. Professor: Nazareno Andrade (baseado no material de Hyggo Almeida e Jacques Sauvé)

Notação de Classes e Objetos

Orientação a Objetos Classes Abstratas

ALUNO: RONI FABIO BANASZEWSKI

As classes Formatador e ElementosAFormatar

Padrões de Design. Padrões de Design. Abstract Factory. Padrões de Design. Padrões de Design Abstract Factory. Abstract Factory.

Administração de Sistemas GNU/Linux

Classe Abstrata e Interface

Singleton. Como a maioria dos programadores organizaria o código para acessar informação de configuração? Eis um exemplo:

Java para Desktop. Programação Orientada à Objetos 2 JSE

T ó p i c o s A v a n ç a d o s e m L i n g u a g e m d e P r o g r a m a ç ã o. Padrões de Projeto. Prof. Alexandre Vidal. DEINF-UFMA Janeiro de 2007

Aula 9 Herança. Prof. Jefersson Alex dos Santos

Computação II Orientação a Objetos

Computação II Orientação a Objetos

b) Adapter, Bridge e Composite. c) Builder, Prototype e Singleton. d) Façade, Command e Decorator. e) Factory Method, Interpreter e Template Method.

Padrões de Projeto de Software

Linguagem de Programação III

Structural Patterns - Bridge

INF011 Padrões de Projeto. 02 Creational Patterns

Padrões Fábrica. Simple Factory Factory Method

Aula 4 Encapsulamento e Relacionamento Cleverton Hentz

Programação Orientada a Objetos. Padrões Estruturais

O PARADIGMA ORIENTADO POR OBJETOS

Introdução à Análise e Projeto de Sistemas

Computação II (MAB 225)

Programação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs

Classes e Objetos. Sintaxe de classe em Java

Observer. Edeyson Andrade Gomes

INF011 Padrões de Projeto. 04 Builder

Padrões de Projeto de Software

Lição 11 Herança, polimorfismo e interfaces

Programação Java. Marco Fagundes. - Herança, Classes Abstratas e Interfaces Marco Fagundes -

15/04/2013. Pensar Orientado a Objetos. Projeto Orientado a Objetos. Características de Objetos. Classe de Objetos. Comunicação entre Objetos

Programação para Games II. Professor Ariel da Silva Dias Orientação a Objetos

Padrões de Projeto. B r i dge. B r i d ge. T ó p i c o s A v a n ç a d o s e m L i n g u a g e m d e P r o g r a m a ç ã o. Classificação: Intenção:

Análise e Projeto de Software Parte II. Marcos Dósea

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Prof. Fabiano Papaiz IFRN

Conceitos de Programação Orientada a Objetos

Programação Orientada a Objetos II Java Décima primeira aula

VB.NET - Orientação a objetos : conceitos básicos em 10

Introdução. Conceitos Básicos. Conceitos Básicos. Conceitos Básicos

CURSO DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

Programação de Computadores - I. Profª Beatriz Profº Israel

Computação II Orientação a Objetos

10. Classes Abstratas e Concretas

Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI CCO002 Engenharia de Software

Frameworks. Viviane Torres da Silva

Orientação a Objetos Parte I. Introdução a POO (Programação Orientada a Objetos)

UNIDADE 5 Aplicação dos Conceitos de Orientação a Objetos

Diagramas de Sequência Exemplo

PROJETO ARQUITETURAL PARTE II: PADRÕES DE PROJETO. Projeto de Programas PPR0001

SEMINÁRIOS INTEGRADOS EM ADS PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Iteradores. Iteradores. Isabel Harb Manssour. Roteiro. Coleções

Pacotes Organizando suas classes e bibliotecas

Introdução ao Java. Prof. Herbert Rausch Fernandes

Análise e Projeto Orientados por Objetos

Nome da classe. Atributos. Serviços / métodos

Programação II. Cassio Diego

Introdução. Conceitos Básicos. Conceitos Básicos. Conceitos Básicos

Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces

Programação Orientada a Objetos

Mas o que é mesmo Padrão de Projeto?

Modelagem de Sistemas. Análise de Requisitos. Modelagem

Padrões de Projeto. Factory Method

Herança e Polimorfismo

3 Uma Abordagem Orientada a Aspectos para o Desenvolvimento de Frameworks

Modificadores de Acesso JAVA

Entender o princípio do Polimorfismo; Conhecer Polimorfismo de Sobreposição e de Inclusão;

Padrões Comportamentais

Tem métodos e estado Pode ser implementado por um ou mais objetos de uma linguagem de programação como C++ ou Java

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

Programação Orientada a Objetos JAVA - NETBEANS

Linguagem de programação Programação Orientada a objetos

DESIGN PATTERNS. Como evitar problemas no futuro

Capítulo 3. Framework 28

Reúso de Software. Adaptado de. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide by Pearson Education

Design Pattern Implementation in Java and AspectJ

Introdução aos Padrões de Projeto. Sylvio Barbon Jr

Padrões de Projeto. Factory Method

Curso - Padrões de Projeto Módulo 2: Padrões de Criação

Capítulo 2. Orientação a Objetos

Computação II Orientação a Objetos

Campus Samambaia INFORMÁTICA PROFESSOR ALESSANDRO

Modelagem de Dados MODELAGEM DE DADOS. Sistemas de Banco de Dados. Profa. Rosemary Melo

Transcrição:

Abstract Factory Edeyson Andrade Gomes www.edeyson.com.br

Introdução Objetivo Prover uma interface para criar uma família de objetos relacionados ou dependentes sem especificar suas classes concretas Também chamado de Kit 2

Resumo Parece semelhante ao padrão Factory Method Porém, em vez do cliente chamar um método de criação (Factory Method), ele possui um objeto de criação (Abstract Factory) e o usa para chamar os métodos de criação Onde Factory Method quer que você seja diferente (via herança) para criar objetos diferentes, o Abstract Factory quer que você tenha algo diferente 3

Resumo Se o cliente possuir uma referência a uma Abstract Factory diferente, toda a criação será diferente Note que a estrutura do objeto composto é a mesma, o que muda são os componentes concretos em sua criação O fato de todos os métodos de criação estarem na mesma subclasse de uma Abstract Factory permite satisfazer a restrição de criar apenas objetos relacionados ou dependentes 4

Quando Usar Quando um sistema deve ser independente de como seus produtos são criados, compostos e representados Ex.: O Cliente não quer ou deve saber como um Computador é criado O sistema deve ser configurado com uma entre várias famílias de produtos Uma família de produtos relacionados foi projetada para uso conjunto e deve-se implementar essa restrição Família Intel, Alpha, Mips Para fornecer uma biblioteca de classes e revelar sua interface, não sua implementação Evitar que objetos sejam diretamente criados 5

Estrutura Genérica 6

Participantes Fábrica Abstrata Define uma interface para as operações que criam objetos como produtos abstratos Fábrica Concreta Implementa as operações para criar objetos para produtos concretos Produto Abstrato Define uma interface para objetos de um tipo ProdutoConcreto Define um objeto produto a ser criado pela Fábrica Concreta correspondente Implementa o Tipo Produto Abstrato Cliente Usa apenas interfaces definidas pelo Tipo Fábrica 7

Colaborações Normalmente uma única instância de uma classe Fábrica Concreta é criada em tempo de execução Essa Fábrica cria objetos tendo uma implementação particular Para criar produtos diferentes os clientes devem usar uma Fábrica Concreta diferente 8

Conseqüências O padrão isola classes concretas Uma Fábrica encapsula a responsabilidade e o processo de criação de objetos de produtos e isola os clientes das classes de implementação O cliente manipula instâncias através de suas interfaces abstratas Facilita a troca de famílias de produtos Uma mudança numa única linha de código pode ser suficiente para mudar a Fábrica Concreta que a aplicação usa A família inteira de produtos muda de uma vez 9

Conseqüências A classe da Fábrica Concreta só aparece em um lugar: Onde ela é instanciada Promove a consistência entre produtos Produtos de uma determinada família devem funcionar conjuntamente e não misturados com produtos de outra família O padrão permite implementar esta restrição com facilidade 10

Conseqüências O lado negativo: Prover suporte a novos tipos de produtos é difícil O motivo é que a Fábrica Abstrata fixa o conjunto de produtos que podem ser criados Dar suporte a mais produtos força a extensão da interface da Fábrica o que envolve mudanças na Fábrica Abstrata e em todas suas subclasses 11

Implementação Factory como padrão Singleton Uma aplicação normalmente só precisa de uma única instância de uma Fábrica por família de produtos O padrão Singleton ajuda a controlar a instância única Criação dos produtos O tipo Fábrica apenas define a interface de criação Quem cria os objetos são as Fábricas Concretas Tais casses (Fábricas Concretas) são freqüentemente implementadas usando o padrão Factory Method Uma Fábrica Concreta faz override do Factory Method de cada produto 12

Exemplo Aparência de Interfaces Gráficas (GUI) Para diferentes modelos de look-and-feel (Motif, Windows, Mac, Presentation Manager, etc.) temos formas diferentes de manipular janelas, scroll bars, menus, etc. 13

Exercício Solução dos problemas das Casas Vamos tirar a responsabilidade de criar o objeto concreto da subclasse e colocar numa classe que é uma Fábrica de Objetos. Faremos Fábricas que constroem objetos de Aço para casas de aço, independendo de estrutura, Fábricas de Madeira, Vidro, etc. Como Planejar as Fábricas (Abstract Factory) Quais são os objetos a criar? Porta Parede Sala Quarto objetox 14

Exercício Como Planejar as Fábricas (Abstract Factory) Quais as famílias dos objetos? Tipos de Fábricas? Aço Vidro Madeira FamíliaX Criar Interface de Fábrica com: PortaAB criaporta() ParedeAB criaparede() SalaAB criasala() QuartoAB criaquarto() ObjetoXAB criaobjetox() 15

Exercício Como Planejar as Fábricas (Abstract Factory) Quantas Fábricas Concretas devem existir FábricaAço FábricaVidro FábricaMadeira FábricaFamíliaX Solução no Eclipse. Questão: Como fica o reuso da solução? 16