| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/08/2008 09:07:16
|
caloro
Thread.start()
Membro desde: 28/04/2008 09:37:19
Mensagens: 42
Offline
|
Minha duvida pode até ser um tanto quanto ignorante, mais comeceii a ler sobre patterns agora..e estava lendo sobre factory mathod....e o pessoal(até aki no guj) diz q uma das vantagens é q nao precisa asber qual objeto criar, a factory faiz isso...,mais c for v, vc vai solicitar um objeto especifico pra factory, o q diz q vc tem q saber qual objeto instanciar, intaum...c eu sei qual objeto, qual a vantagm de ter um metodo só pra instanciar o objeto, pode ser q estou falando besteira, mais parece meio inutil...se alguem puder me esplicar melhor..agradeceria muito,
e me desculpem se eu disse alguma coisa absurda(o que eu nao duvido), mais é q eu realmente nao intendi direito a finalidade, e pelo q eu vi...varias pessoas usam, e gostaria de saber pq q é tão bom.
Agradeco desde ja.
|
"O maior prazer da vida é fazer o impossível" |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/08/2008 09:17:15
|
fpavao
JavaTeenager
![[Avatar]](/images/avatar/fc4e60f4fcea7a3008d593ba66e46bc2.png)
Membro desde: 11/05/2007 16:43:51
Mensagens: 155
Localização: São Paulo - SP
Offline
|
Na verdade vc não sabe qual objeto vai instanciar... vc sabe a interface dele, o objeto irá variar de acordo com a implementação do Factory usada...
|
Fernando Pavão
IBM Certified SOA Associate
IBM Certified Solution Designer - IBM Rational Unified Process V7.0
Sun Certified Java Programmer - SCJP 5
Sun Certified Business Component Developer - SCBCD 5
Sun Certified Enterprise Architect (I) - SCEA 5 (Part 1)
SAP Certified Development Consultant - SAP NetWeaver
Microsoft Certified Professional - MCP
https://www.ibm.com/developerworks/mydeveloperworks/blogs/fpavao/?lang=en
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/08/2008 09:21:26
|
caloro
Thread.start()
Membro desde: 28/04/2008 09:37:19
Mensagens: 42
Offline
|
Sim, que a factory vai instaciar eu concordo, mais para isso, pode ser por exemplo atravez de um parametro, dependendo do parametro ele instaca um objeto certo?..intaum..mais para mandar o parametro, eu tenho q saber o que eu quero..qual o bjeto...certo?
|
"O maior prazer da vida é fazer o impossível" |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/08/2008 09:33:09
|
fpavao
JavaTeenager
![[Avatar]](/images/avatar/fc4e60f4fcea7a3008d593ba66e46bc2.png)
Membro desde: 11/05/2007 16:43:51
Mensagens: 155
Localização: São Paulo - SP
Offline
|
Não acho interessante usar parametros, da uma olhada nesta figura...
http://java.sun.com/blueprints/corej2eepatterns/Patterns/images09/figure09_07.gif
vc usaria uma DaoFactory (interface) e a implementação CloudScapeDaoFactory para criar Daos do tipo Cloudscape<alguma coisa> DAO
agora suponha q vc tenha uma outra arvore nesta figura, outra implementação de DaoFactory, que crie DAO de outros tipos.. vc continuaria com sua
DaoFactory (interface) no cliente, mas ao mudar a implementação para o OutraCoisaDaoFactory e não CloudScapeDaoFactory, vc obteria outros objetos, que também implementariam as interfaces CustomerDAo,,etc...
|
Fernando Pavão
IBM Certified SOA Associate
IBM Certified Solution Designer - IBM Rational Unified Process V7.0
Sun Certified Java Programmer - SCJP 5
Sun Certified Business Component Developer - SCBCD 5
Sun Certified Enterprise Architect (I) - SCEA 5 (Part 1)
SAP Certified Development Consultant - SAP NetWeaver
Microsoft Certified Professional - MCP
https://www.ibm.com/developerworks/mydeveloperworks/blogs/fpavao/?lang=en
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/08/2008 09:52:33
|
caloro
Thread.start()
Membro desde: 28/04/2008 09:37:19
Mensagens: 42
Offline
|
Bom, o que vc me disse agora é o conseito de usar uma interface, isso eu intendo, sei pq usar e tudo a minha grande duvida é o seguinte, vou usar um exemplo(pode estar errado, devido ao fato de eu nao intender muito bem sobre isso):
Digamos q eu tenho uma class
responsavel pela crição de objetos, dentro dela eu tenho por exemplo:
e assim por diante.
para eu instanciar um cliente eu nao teria q fazer isso:
alguma coisa assim??
e para o funcionario:
Não seria isso, se for assim, eu tenho q saber q eu quero um cliente ou um funcionario pra poder chamar os metodos e a factory instanciar o objeto.
Estou certo ou errado?
|
"O maior prazer da vida é fazer o impossível" |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/08/2008 09:59:11
|
fpavao
JavaTeenager
![[Avatar]](/images/avatar/fc4e60f4fcea7a3008d593ba66e46bc2.png)
Membro desde: 11/05/2007 16:43:51
Mensagens: 155
Localização: São Paulo - SP
Offline
|
No seu exemplo vc não está usando nenhuma interface...??? ai realmente não tem muita vantagem, se Funcionario fosse uma interface e Factory também, vc poderia ter uma implementação de Factory que retornasse Funcionarios Terceirizados e outra que retorne os da empresa (sendo cada um uma implementação de Funcionario), seu cliente conheceria as interfaces Factory e Funcionario e em runtime poderia estar trabalhando com terceirizados ou não, de acordo com a implementação de Factory q vc usar..
|
Fernando Pavão
IBM Certified SOA Associate
IBM Certified Solution Designer - IBM Rational Unified Process V7.0
Sun Certified Java Programmer - SCJP 5
Sun Certified Business Component Developer - SCBCD 5
Sun Certified Enterprise Architect (I) - SCEA 5 (Part 1)
SAP Certified Development Consultant - SAP NetWeaver
Microsoft Certified Professional - MCP
https://www.ibm.com/developerworks/mydeveloperworks/blogs/fpavao/?lang=en
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/08/2008 10:06:51
|
tnaires
GUJ Master
![[Avatar]](/images/avatar/5f6371c9126149517d9ba475def53139.png)
Membro desde: 22/12/2003 08:05:58
Mensagens: 1678
Localização: Porto Alegre/RS - Natal/RN
Offline
|
Vejamos.
Suponha que você tem a seguinte interface:
Suponha também que você tem as seguintes armas:
Agora você quer instanciar objetos das classes que você escreveu. Você pode fazer isso de duas formas:
Usar new diretamente. O problema dessa abordagem é que seu código precisa referenciar diretamente as implementações de armas de fogo ( e conhecer todos os detalhes de sua criação, como por exemplo os parâmetros passados para o construtor ). Veja a seguir:
Se um dia a forma de instanciação de armas de fogo mudar, você terá que propagar a manutenção por todo o seu código.
Ou você pode construir uma fábrica de armas de fogo:
E quando você for instanciar uma arma de fogo, pode fazer simplesmente:
Dessa forma, você tem um local centralizado para instanciar seus objetos, além de abstrair do código cliente todos os detalhes do processo de instanciação - afinal, tudo o que você precisa nesse caso é atirar, não importa com qual arma.
|
Tarso Nunes Aires
Blog - http://cabritin.wordpress.com/
Delicious - http://delicious.com/tnaires
Twitter - @tnaires
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/08/2008 10:07:55
|
caloro
Thread.start()
Membro desde: 28/04/2008 09:37:19
Mensagens: 42
Offline
|
è realmente nao usei interface...
mais é o seguinte...o meu ponto é q mesmo q eu tenho uma classe interface para funcionario e para factory, para eu instanciar um funcionaario tercearizado por exemplo, eu teria q chamar um metodo da classe factory que implementa a interface factory, até ai tudo certo....eu intendi até como funciona a facotry, mais para eu chamar um metodo pra criar um objeto funcionario tercearizado, eu preciso saber que eu quero um funcionario tercearizado, conclusao(na minha opniao), de qqer jeito eu vou saber o que criar, a factory nada mais é do que uma classe para centralizar a criação de objetos.....é isso??
|
"O maior prazer da vida é fazer o impossível" |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/08/2008 10:11:50
|
caloro
Thread.start()
Membro desde: 28/04/2008 09:37:19
Mensagens: 42
Offline
|
Bom nao tinha lido sua resposta tnaires, agora sim ficou claro pra mim....estou certo intaum...a factory é um modo de centralizar a criacao de objetos......vlw pelo esclarecimento...e vlw tbm fpavao, suas explicaçõe sforam de grande ajuda tbm...
Brigadao msm pessoal..
|
"O maior prazer da vida é fazer o impossível" |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/08/2008 10:53:26
|
fantomas
GUJ Master
![[Avatar]](/images/avatar/a2bf57c3aee957f2aaf75aa84717b3be.jpg)
Membro desde: 24/04/2008 16:10:55
Mensagens: 1534
Localização: Terra (maior parte do tempo)
Offline
|
Oi caloro,
Bacana sua preocupação em entender os padrões, também estou nessa rsrsrs.
Acho que o problema é que vc leu ou ouviu dizer que ao utilizar esse padrão não precisaria "saber qual objeto instanciar" e vc levou ao pé da letra isso e de forma, vamos dizer dizer assim, superficial ( o que é natural ).
Achei o exemplo do tnaires bacana:
tnaires wrote: Arma revolver = Factory.getRevolver();
Arma espingarda = Factory.getEspingarda();
Imagine (acho que ele até disse isso) que na implementação do objeto revolver haja alguma alteração, vc não teria que ajustar estas duas linha apresentada acima e obviamente os objetos não seriam mais os mesmos, se fosse passado algum parametro para getRevolver() ex: getRevolver(Revolver.TAUROS), o usuário deste método não tem condições de dizer qual classe foi instanciada pra gerar o revolver, provavelmente irá dizer que a classe implementou a interface Arma.
Nas explicações sobre os padrões sempre vem os pontos positivos, negativos e o objetivo do padrão faça uma revisão, certamente vc verá que tem mais coisa do isso (saber qual objeto será instanciado) envolvido neste padrão.
Espero ter ajudado e não ter falado muita m#$!@.
P.S. Padrões e Cachaça, use com moderação.
[]'s
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/08/2008 11:57:53
|
TangZero
Java Ninja
Membro desde: 23/01/2007 16:00:46
Mensagens: 270
Localização: São Paulo
Offline
|
fantomas wrote:
P.S. Padrões e Cachaça, use com moderação.
Discordo.......... cachaça, faz muito bem para saúde!
|
TangZero
-SCJP 6
-SCWCD 5
-SCBCD 5
 |
|
|
 |
|
|