Vous êtes sur la page 1sur 4

17/09/13

FACEBOOK TWITTER CONTATO

O padro Factory Method - Portal Arquiteto

PRINCIPAL
Principal

ARQUITETURA DE SOFTWARE

DESENVOLVIMENTO

ENGENHARIA DE SOFTWARE

OUTROS

DESENVOLVIMENTO

O padro Factory Method Prxima Publicao

Publicao Anterior

Pesquisa
Procure aqui..

O padro Factory Method


ADMIN 12 DE ABRIL DE 2010 0

Ol pessoal, Hoje vamos ver um pouco como funciona o padro Factory Method. Este um padro de Criao (Creational Pattern) e lida com o problema de criao de objetos. Problema Este padro utilizado quando voc deseja criar um objeto sem especificar qual a classe vai ser utilizada. O padro resolve isso definindo uma interface para criar um objeto, mas deixando as subclasses decidirem que classe instanciar.
JSF versus Struts
6 de outubro de 2008, 6 Comentrios

Subscribe
to RSS Feed

Seguidores

406

100
Fs

Popular

Comentrios

Tags

EJB 3 versus Spring


3 de outubro de 2008, 5 Comentrios

DAO Genrico com JPA e Hibernate


4 de novembro de 2008, 5 Comentrios

Figura 1: Diagrama de Classes para o Factory Method. Utilizando nosso exemplo anterior (veja Abstract Factory) no nosso cdigo de uma aplicao GED poderamos utilizar o padro Factory Method junto com o Abstract Factory. Com o Abstract Factory nos criamos as familias de objetos relacionados e com o Factory Method nos criamos a fabrica que realmente vai instanciar o classe. Ou seja, ns delegamos a factory a responsabilidade de escolher que classe instanciar.
ANLISE UML ARQUITETURA DE SISTEMAS CERTIFICAO DESENVOLVIMENTO JAVA DESENVOLVIMENTO WEB ENGENHARIA DE SOFTWARE ENQUETES EVENTOS FERRAMENTAS DE TESTE GERAL MODELAGEM DE PROCESSOS NOTCIAS PADRES DE PROJETO

Categorias

Figura 2: Diagrama de Classes para o Factory Method do exemplo. Implementao

PERFORMANCE PLATAFORMA GOOGLE JME

www.portalarquiteto.com.br/o-padrao-factory-method/

1/4

17/09/13

O padro Factory Method - Portal Arquiteto


PROCESSO DE DESENVOLVIMENTO PROVA DE SELEO SOA USABILIDADE

Observe que modificamos as factorys do Abstract Factory (compare com o post sobre Factory Method) para agora chamar a respectiva Factory Method. Classes modificadas: PdfDocumentFactory, TxtDocumentFactory.
p a c k a g eb r . g e d . a b s t r a c t f a c t o r y . c o n c r e t e ; i m p o r tb r . g e d . a b s t r a c t f a c t o r y . i n t e r f a c e s . D o c u m e n t F a c t o r y ; i m p o r tb r . g e d . a b s t r a c t f a c t o r y . i n t e r f a c e s . D o c u m e n t R e a d e r ; i m p o r tb r . g e d . a b s t r a c t f a c t o r y . i n t e r f a c e s . D o c u m e n t W r i t e r ; i m p o r tb r . g e d . f a c t o r y m e t h o d . D o c u m e n t R e a d e r F a c t o r y ; i m p o r tb r . g e d . f a c t o r y m e t h o d . D o c u m e n t W r i t e r F a c t o r y ; p u b l i cc l a s sP d f D o c u m e n t F a c t o r yi m p l e m e n t sD o c u m e n t F a c t o r y { @ O v e r r i d e p u b l i cD o c u m e n t R e a d e rc r e a t e D o c u m e n t R e a d e r () { S y s t e m . o u t . p r i n t l n (" P d f D o c u m e n t F a c t o r y . c r e a t e D o c u m e n t R e a d e r: : :P D F ") ; / /A Q U IE S T AAN O S S AF A C T O R YM E T H O D r e t u r nD o c u m e n t R e a d e r F a c t o r y . g e t R e a d e r (D o c u m e n t F a c t o r y . P D F) ; } @ O v e r r i d e p u b l i cD o c u m e n t W r i t e rc r e a t e D o c u m e n t W r i t e r () { S y s t e m . o u t . p r i n t l n (" P d f D o c u m e n t F a c t o r y . c r e a t e D o c u m e n t W r i t e r: : :P D F ") ; / /A Q U IE S T AAN O S S AF A C T O R YM E T H O D r e t u r nD o c u m e n t W r i t e r F a c t o r y . g e t W r i t e r (D o c u m e n t F a c t o r y . P D F) ; } } p a c k a g eb r . g e d . a b s t r a c t f a c t o r y . c o n c r e t e ; i m p o r tb r . g e d . a b s t r a c t f a c t o r y . i n t e r f a c e s . D o c u m e n t F a c t o r y ; i m p o r tb r . g e d . a b s t r a c t f a c t o r y . i n t e r f a c e s . D o c u m e n t R e a d e r ; i m p o r tb r . g e d . a b s t r a c t f a c t o r y . i n t e r f a c e s . D o c u m e n t W r i t e r ; i m p o r tb r . g e d . f a c t o r y m e t h o d . D o c u m e n t R e a d e r F a c t o r y ; i m p o r tb r . g e d . f a c t o r y m e t h o d . D o c u m e n t W r i t e r F a c t o r y ; p u b l i cc l a s sT x t D o c u m e n t F a c t o r yi m p l e m e n t sD o c u m e n t F a c t o r y { @ O v e r r i d e p u b l i cD o c u m e n t R e a d e rc r e a t e D o c u m e n t R e a d e r () { S y s t e m . o u t . p r i n t l n (" T x t D o c u m e n t F a c t o r y . c r e a t e D o c u m e n t R e a d e r: : :T X T ") ; / /A Q U IE S T AAN O S S AF A C T O R YM E T H O D r e t u r nD o c u m e n t R e a d e r F a c t o r y . g e t R e a d e r (D o c u m e n t F a c t o r y . T X T) ; } @ O v e r r i d e p u b l i cD o c u m e n t W r i t e rc r e a t e D o c u m e n t W r i t e r () { S y s t e m . o u t . p r i n t l n (" T x t D o c u m e n t F a c t o r y . c r e a t e D o c u m e n t W r i t e r: : :T X T ") ; / /A Q U IE S T AAN O S S AF A C T O R YM E T H O D r e t u r nD o c u m e n t W r i t e r F a c t o r y . g e t W r i t e r (D o c u m e n t F a c t o r y . T X T) ; } } p a c k a g eb r . g e d . f a c t o r y m e t h o d ; i m p o r tb r . g e d . a b s t r a c t f a c t o r y . i n t e r f a c e s . D o c u m e n t R e a d e r ; p u b l i ca b s t r a c tc l a s sR e a d e r F a c t o r y { p u b l i cs t a t i cD o c u m e n t R e a d e rg e t R e a d e r (S t r i n gr e a d e r T y p e) {r e t u r nn u l l ;} } p a c k a g eb r . g e d . f a c t o r y m e t h o d ; i m p o r tb r . g e d . a b s t r a c t f a c t o r y . i n t e r f a c e s . D o c u m e n t W r i t e r ; p u b l i ca b s t r a c tc l a s sW r i t e r F a c t o r y { p u b l i cs t a t i cD o c u m e n t W r i t e rg e t W r i t e r (S t r i n gr e a d e r T y p e) {r e t u r nn u l l ;} } p a c k a g eb r . g e d . f a c t o r y m e t h o d ; i m p o r tb r . g e d . a b s t r a c t f a c t o r y . c o n c r e t e . P d f D o c u m e n t R e a d e r ; i m p o r tb r . g e d . a b s t r a c t f a c t o r y . c o n c r e t e . T x t D o c u m e n t R e a d e r ; i m p o r tb r . g e d . a b s t r a c t f a c t o r y . i n t e r f a c e s . D o c u m e n t F a c t o r y ; i m p o r tb r . g e d . a b s t r a c t f a c t o r y . i n t e r f a c e s . D o c u m e n t R e a d e r ;

Publicaes Recentes
Tudo sobre a nova especificao JSF
27 de junho de 2013, Nenhum Comentrio

10 Maiores problemas de performance em aplicaes Java EE


3 de outubro de 2012, 2 Comentrios

Google acaba de ganhar a ao contra a Oracle


24 de maio de 2012, Nenhum Comentrio

p u b l i cc l a s sD o c u m e n t R e a d e r F a c t o r ye x t e n d sR e a d e r F a c t o r y { p u b l i cs t a t i cD o c u m e n t R e a d e rg e t R e a d e r (S t r i n gr e a d e r T y p e) { i f(r e a d e r T y p e! =n u l l& &r e a d e r T y p e . e q u a l s I g n o r e C a s e ( D o c u m e n t F a c t o r y . T X T)) {

www.portalarquiteto.com.br/o-padrao-factory-method/

2/4

17/09/13

O padro Factory Method - Portal Arquiteto


r e t u r nn e wT x t D o c u m e n t R e a d e r () ; } e l s ei f(r e a d e r T y p e! =n u l l& &r e a d e r T y p e . e q u a l s I g n o r e C a s e ( D o c u m e n t F a c t o r y . P D F)) { r e t u r nn e wP d f D o c u m e n t R e a d e r () ; } r e t u r nn u l l ; }

p a c k a g eb r . g e d . f a c t o r y m e t h o d ; i m p o r tb r . g e d . a b s t r a c t f a c t o r y . c o n c r e t e . P d f D o c u m e n t W r i t e r ; i m p o r tb r . g e d . a b s t r a c t f a c t o r y . c o n c r e t e . T x t D o c u m e n t W r i t e r ; i m p o r tb r . g e d . a b s t r a c t f a c t o r y . i n t e r f a c e s . D o c u m e n t F a c t o r y ; i m p o r tb r . g e d . a b s t r a c t f a c t o r y . i n t e r f a c e s . D o c u m e n t W r i t e r ; p u b l i cc l a s sD o c u m e n t W r i t e r F a c t o r ye x t e n d sW r i t e r F a c t o r y { p u b l i cs t a t i cD o c u m e n t W r i t e rg e t W r i t e r (S t r i n gr e a d e r T y p e) { i f(r e a d e r T y p e! =n u l l& &r e a d e r T y p e . e q u a l s I g n o r e C a s e (D o c u m e n t F a c t o r y . T X T)) { r e t u r nn e wT x t D o c u m e n t W r i t e r () ; } e l s e i f(r e a d e r T y p e! =n u l l& &r e a d e r T y p e . e q u a l s I g n o r e C a s e (D o c u m e n t F a c t o r y . P D F)) { r e t u r nn e wP d f D o c u m e n t W r i t e r () ; } r e t u r nn u l l ; } }

Utilizaes comuns Utilize quando quiser postergar a instanciao de suas classes. Uma classe quer que suas subclasses especifiquem os objetos que criam. Quando a escolha de qual classe instanciar for tomada em tempo de execuo. Conseqncias Segundo GoF o padro Abstract Factory tem as seguintes vantagens e desvantagens: - elimina a necessidade de anexar classes especificas das aplicaes no cdigo - fornece um gancho para as subclasses. A criao de classes e subclasses se torna mais flexvel. - como desvantagem podemos citar o fato de que podemos ter que criar varias subclasses da classe Creator apenas para criar um ConcreteProduct. Concluses O padro Factory Method um velho conhecido dos programadores Java. Ele esta presente em Collections. Em Collections o mtodo iterator uma Factory Method. Pense aqui: ele cria um objeto, retorna uma interface, implementado por vrias classes. Este padro justamente sobre isso: diversas classes que implementam a mesma operao, retornam as mesma interface (ou classe abstrata) mas retornam diferentes implementaes. Por hoje s pessoal.

TAGS DESENVOLVIMENTO, PADRES DE PROJETO

POSTADOS EM

PADRES DE PROJETO

www.portalarquiteto.com.br/o-padrao-factory-method/

3/4

17/09/13

O padro Factory Method - Portal Arquiteto

Sobre o autor: admin

View all posts by admin

Related

Trabalhando com JPA e enumeraes

Evento JBossInBossa2010

Performance de aplicaes WEB

JEE 6 est bombando de novidades!

Deixe uma resposta


Nome (origatrio) Comentrio

Email (origatrio)

Site

Comentrio da publicao

Links de Parceiros
Curso Java BH Curso java SE BH Curso Java EE BH Descontos diversas Lojas Farmcia de Manipulao e Emagrecimento Farmcia Manipulao e Emagrecimento Perguntas e respostas de Compra Portal Imobilirio

Tweets Recentes
Siga-nos no Twitter

Encontre-nos no Facebook
Portal do Arquiteto
Curtir 100 pessoas curtiram Portal do Arquiteto.

P lug-in social do F acebook

SEO para site Toolbox Toolbox

Copyright 2011 - Thinkworks Solutions. All rights reserved.

Powered by Thinkworks Solutions

Voltar para o topo

www.portalarquiteto.com.br/o-padrao-factory-method/

4/4

Vous aimerez peut-être aussi