Creational Patterns Factory method

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

Padrões de Projeto. Factory Method

Padrões de Projeto. Factory Method

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

Padrões Fábrica. Simple Factory Factory Method

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

Mas o que é mesmo Padrão de Projeto?

INF011 Padrões de Projeto. 04 Builder

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

Tópicos da Aula. POO e Padrões de Projetos. Considere três classes... Reuso de Classes. Locadora de DVD. Sistema Acadêmico

Computação II Orientação a Objetos

Padrões de Projeto de Software

INF011 Padrões de Projeto. 03 Abstract Factory

Classes e Objetos. Sintaxe de classe em Java

Capítulo 2. Orientação a Objetos

Linguagem de Programação III

Frameworks. Viviane Torres da Silva

C com introdução a OO

Aula 4 Encapsulamento e Relacionamento Cleverton Hentz

Introdução a Padrões, GRASP. Nazareno Andrade (baseado no material de Hyggo Almeida e Jacques Sauvé)

Computação II Orientação a Objetos

Definição. Em POO, a abstração é o processo de esconder os detalhes de implementação de uma aplicação.

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

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

Interfaces e Classes Abstratas

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

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

Orientação a Objetos Classes Abstratas

Mérito Desenvolvimento Imobiliário I FII. Fundo de Investimento Imobiliário

Herança e Polimorfismo

Abstract Factory Builder Factory Method Prototype Singleton Adapter Bridge Composite Decorator Facade Flyweight Proxy

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

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

4 Binding entre Charm++ e Lua

Unidade: Classes Abstratas, Polimorfismo, Sobreposição e Interfaces

Classe Abstrata e Interface

Computação II (MAB 225)

Interface vs. Implementação Herança vs. Composição

ENTENDENDO O FRAMEWORK FORK/JOIN DE JAVA

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

AULA 2 VISÃO BÁSICA DE CLASSES EM PHP

INF011 Padrões de Projeto. 02 Creational Patterns

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

POO29004 Programação Orientada a Objetos

Engenharia de Software II

Transcrição:

Objetivo do Factory method é definir qual será a subclasse que utilizada um cliente. Permite que o sistema funcione sem o conhecimento prévio das subclasses. Assim um framework pode ser construído apenas com as interfaces e permitir que o cliente defina as implementações e, principalmente, quais delas serão instanciadas e no momento apropriado. 26-ago-08 Leandro Tonietto 50

Exemplo: Aplicativo similar ao OpenOffice.org Um aplicativo de automação de tarefas de escritório pode gerenciar qualquer uma das aplicações-tarefas (parte do framework). Dois pontos de abstração: aplicativo-tarefa de escritório e o documento ele manipula. Ambos são classes abstratas, para controlar o código comum entre as aplicações e permitir que a implementação de cada tarefa realize apenas o que é específico. O framework não pode inicializar um objeto em particular porque ele não tem conhecimento prévio sobre qual classe deve usar. Esta tarefa fica delegada a um método que determina qual é a implementação que será usada e com qual tipo de documento. Isto é o factory method. O método instancia um objeto de uma classe de várias possíveis para uma classe abstrata ou interface. 26-ago-08 Leandro Tonietto 51

Exemplo: Creational Patterns Factory method 26-ago-08 Leandro Tonietto 52

Estrutura: Creational Patterns Factory method 26-ago-08 Leandro Tonietto 53

Aplicação. Quando: Uma classe não pode antecipar a classe dos objetos que ela deve criar [1]. Uma classe quer que suas subclasses especifiquem os objetos que ela deve utilizar. Classes que delegam para um método a escolha de uma de muitas possibilidades. Apenas uma deve ser escolhida. 26-ago-08 Leandro Tonietto 54

Conseqüências: Eliminam a necessidade de conhecimento prévio das implementações específicas. Flexibilidade para novas implementações num mesmo sistema. Desvantagem é quando é necessário evolução na criação das subclasses. Permite uma criação de um objeto de forma mais requintada, nas apenas uma instanciação simples. Por exemplo, a criação um documento pode ser feita com auxílio de alguma janela de diálogo Conecta hierarquias paralelas. 26-ago-08 Leandro Tonietto 55

Conseqüências: 26-ago-08 Leandro Tonietto 56

Questões de implementação: Duas variações do padrão: Uma classe Creator não implementa o factory method que ela cria. A classe Creator implementa o método de retorno diretamente. Métodos de fábrica parametrizados, onde a escolha da classe é feita com algum parâmetro. Métodos de fábrica são sempre abstratos ou virtuais na interface e implementados nas subclasses. É possível fazer o uso de templates para implementar o factory. Veja maiores detalhes em [1]. 26-ago-08 Leandro Tonietto 57

Exemplo: Continuando a aplicação de tratamento de imagens, proposta no pattern builder. Cada descritor de classe (FilterDescriptor), retorna uma instância do filtro de imagem apropriado. Para executar o filtro na interface apropriada o objeto da classe FilterUI obtém o filtro de imagem através do FilterDescriptor. Como ele não tem conhecimento prévio sobre os filtros, o factory method da FilterDescriptor pode instanciar o objeto apropriado do filtro. O framework continua isolado da aplicação. 26-ago-08 Leandro Tonietto 58

Exemplos: Creational Patterns Factory method 26-ago-08 Leandro Tonietto 59

26-ago-08 Leandro Tonietto 60