INF011 Padrões de Projeto. 05 Factory Method

Documentos relacionados
Padrões de Projeto. Factory Method

INF011 Padrões de Projeto. 03 Abstract Factory

Padrões de Projeto. Factory Method

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

Creational Patterns Factory method

INF011 Padrões de Projeto. 10 Bridge

Padrões Fábrica. Simple Factory Factory Method

" ##$#$!% # & #$#$ !!!!"!

INF011 Padrões de Projeto. 04 Builder

INF011 Padrões de Projeto. 11 Composite

Notação de Classes e Objetos

INF011 Padrões de Projeto. 15 Proxy

Etapas principais do desenvolvimento de software Padrões arquiteturais Padrões de projeto

INF011 Padrões de Projeto Introdução

Padrões de Projeto de Software

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

INF011 Padrões de Projeto. 21 Memento

Computação II Orientação a Objetos

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

Padrões de Projeto de Software Orientado a Objetos

Programação Orientada a Objetos. Padrões de Criação

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 de Projeto. Abstract Factory

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

3 Uma Abordagem Orientada a Aspectos para o Desenvolvimento de Frameworks

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

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

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

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

Padrões de Projeto de Software

Padrão de projeto de software

ALUNO: RONI FABIO BANASZEWSKI

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

Padrões de Projeto de Software

Computação II Orientação a Objetos

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

Padrões de Projeto de Software

4 FrAMEx. 4.1.Visão Geral

Linguagem de Programação III

4 Framework Proposto para Construção de Mediadores

Classe Interna (Inner)

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

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

Profa. Thienne Johnson

Classes e Objetos. Sintaxe de classe em Java

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

UML (Linguagem Modelagem Unificada) João Paulo Q. dos Santos

Interfaces e Classes Abstratas

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

Conceitos de Programação Orientada a Objetos

Computação II 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:

Classe Abstrata e Interface

Análise e Projeto Orientados por Objetos

CONCEITOS BÁSICOS DE ORIENTAÇÃO A OBJETOS PROF. ME. HÉLIO ESPERIDIÃO

PADRONIZAÇÃO 10. INTERFACES PADRONIZAÇÃO CONTRATOS

Daniel Wildt

Herança Tiago Eugenio de Melo

Prof. Me. Sérgio Carlos Portari Júnior

Interfaces. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.

Sistemas Operacionais II

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

Padrões de Projeto de Software

Classes, Métodos e Propriedades

POO e C++: Herança e Polimorfismo

Sumário. Prefácio 12. Capítulo 1 - Técnicas Simples Para um Código Limpo 23

Comunicação Objetos Distribuídos e RMI

POO29004 Programação Orientada a Objetos

Especialização em web com interfaces ricas. Padrões de Projeto - II

Namespaces, Classes e Métodos.

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

Frameworks. SSC-526 Análise e Projeto Orientados a Objeto Profa. Dra. Elisa Yumi Nakagawa 2º semestre de 2013

Tipo Abstrato de Dados (TAD) Algoritmos e Estruturas de Dados I Prof. Tiago Eugenio de Melo

Linguagens de Programação

Polimorfismo. O que é polimorfismo?

Smart Proxies para Invocação de Serviços Web Replicados

INF011 Padrões de Projeto. 02 Creational Patterns

C com introdução a OO

Classes e Objetos INTRODUÇÃO À ORIENTAÇÃO A OBJETOS COM JAVA - MÓDULO II. Classes. Objetos. Um modelo para a criação de objetos

Tópicos Avançados em Linguagem de Programação. Builder. Builder. Builder. Classificação: Padrões de Projeto. Builder Pattern.

4 Binding entre Charm++ e Lua

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

ORIENTAÇÃO A OBJETOS SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO

As classes Formatador e ElementosAFormatar

Sistemas de Objetos DistribuídosPrimeira Aplicação Java ORB p.1/21

LEIC-T LERC MEIC-T 2011/2012 1º Semestre Programação com Objetos 2012/01/07 11h00m 3/10

E N C A P S U L A M E N T O P R O F. M E. H É L I O E S P E R I D I Ã O

PADRÕES DE SOFTWARE. Jerffeson Teixeira de Souza, Ph.D. Tarciane de Castro Andrade. Grupo de Padrões de Software da UECE (GPS.

4 Arquitetura. Figura 1 Relacionamento entre as entidades do sistema de comentários. Comentário Tópico Categoria

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

2.1 NesC Seguem alguns dos principais desafios impostos à linguagem NesC:

PMR3507 Fábrica digital

INTRODUÇÃO. RPC x RMI

Paradigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto

Programação com Objectos. 2º Teste 2015/2016 1º Semestre

Padrões de Projeto de Software

Carlos Eduardo Batista. Centro de Informática - UFPB

5 Implementação 5.1 Plataforma 5.2 Arquitetura

BUSCA POR OPORTUNIDADES DE REFATORAÇÃO PARA APLICAÇÃO DE PADRÕES DE PROJETO

Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; IFSC/POO + JAVA - prof. Herval Daminelli

Transcrição:

INF011 Padrões de Projeto 05 Factory Method Sandro Santos Andrade sandroandrade@ifba.edu.br Instituto Federal de Educação, Ciência e Tecnologia da Bahia Departamento de Tecnologia Eletro-Eletrônica Graduação Tecnológica em Análise e Desenvolvimento de Sistemas

Propósito: Definir uma interface para criação de um objeto porém deixando que sub-classes decidam de qual classe instanciá-lo Também conhecido como: Virtual Constructor Motivação: Um Application Framework para construção de sistemas que apresentam múltiplos documentos ao usuário define as classes abstratas Application e Document Um sistema de construção de diagramas, por exemplo, teria as classes DrawingApplication e DrawingDocument O framework deve instanciar objetos mas só conhece classes abstratas

Motivação: Sub-classes de Application implementam o método abstrato CreateDocument para retornar a sub-classe de Document apropriada

Aplicabilidade: Uma classe não conhece previamente as classes dos objetos que ela precisa instanciar Uma classe quer que suas sub-classes especifiquem os objetos a serem criados Classes delegam responsabilidade para uma entre várias sub-classes helper e deseja-se localizar o conhecimento de para qual sub-classe helper foi delegada a operação

Estrutura:

Participantes: Product (Document): define a interface dos objetos que o factory method cria ConcreteProduct (MyDocument): implementa a interface Product Creator (Application): Declara o factory method, retornando um objeto do tipo Product. Pode ser abstrato ou não Geralmente invoca o factory method ConcreteCreator (MyApplication): implementa (ou sobrepõe) o factory method para retornar uma implementação específica de Product (algum ConcreteProduct)

Colaborações: O Creator confia às suas sub-classes a definição do factory method, retornando uma instância apropriada de ConcreteProduct

Consequências: Elimina a necessidade de utilizar, no seu código, classes específicas de aplicação pois utiliza somente a interface Product Exige a derivação de Creator para a implementação de um único método (provavelmente com uma linha) Provê hooks às sub-classes: no sistema de documentos, por exemplo, pode-se definir um factory method chamado createfiledialog() com uma implementação default e permitir que sub-classes indiquem a utilização de um objeto alternativo

Consequências: Conecta hierarquias paralelas de classes:

Implementação: Duas variações: Creator como classe abstrata: Requer a existência de sub-classes que implementam o factory method e, portanto, se isolam totalmente de classes não anteriormente previstas Creator com implementação default do factory method: Não requer um ConcreteCreator. Define o factory method simplesmente para tornar o código mais flexível: sub-classes podem futuramente sobrescrever o factory method Factory methods parametrizados: O factory method recebe um parâmetro indicando o tipo de produto concreto a ser criado

Implementação: Factory methods parametrizados:

Implementação: Variações e problemas específicos de linguagem: O factory method pode retornar a classe do objeto a ser criado e, portanto, um ConcreteCreator pode definir esta classe em run-time A classe do objeto a ser criado pode ser também um atributo estático no Creator No C++, o factory method do ConcreteCreator não pode ser chamado no construtor de Creator, pois ainda não está disponível. Em vez disso, faça lazy initialization No C++, templates podem ser utilizados para evitar a criação de sub-classes com somente um método Padronização para nomes dos factory methods: Class *domakeclass(), onde Class é a classe do produto

Código exemplo:

Código exemplo:

Usos conhecidos: Altamente presente em toolkits e frameworks MacApp (exemplo do documento) e ET++ (exemplo dos manipuladores) Framework MVC do Smalltalk Orbix ORB: factory method para gerar o tipo apropriado de proxy quando uma invocação remota é necessária

Padrões relacionados: Abstract Factory é frequentemente implementado com Factory Methods Factory methods são geralmente chamados dentro de Template methods Utilizando Prototypes a criação das sub-classes não é necessária, entretanto será necessário um método de inicialização do produto, a ser chamado pelo Creator. Com factory methods convencionais isso não é necessário

INF011 Padrões de Projeto 05 Factory Method Sandro Santos Andrade sandroandrade@ifba.edu.br Instituto Federal de Educação, Ciência e Tecnologia da Bahia Departamento de Tecnologia Eletro-Eletrônica Graduação Tecnológica em Análise e Desenvolvimento de Sistemas