IOC ???  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
alberto_ribeiro
JavaEvangelist
[Avatar]

Membro desde: 01/07/2005 11:15:19
Mensagens: 351
Localização: SP
Offline

Porque usar IOC ? qual o motivo de não ficar dando new ou criar factory para um projeto ? Que vantagens você tem quando usa o IOC ???

Obrigado,

[]'s
Alberto

Sun Certified Programmer for Java 1.5
[Email] [MSN]
ASOBrasil
JavaEvangelist
[Avatar]

Membro desde: 25/06/2005 20:57:30
Mensagens: 402
Localização: São Paulo
Offline


Artigos antigos, mas válidos:
http://www.martinfowler.com/articles/injection.html
http://www.theserverside.com/tt/articles/article.tss?l=IOCandEJB

Tutorial no guj sobre IOC
http://www.guj.com.br/java.tutorial.artigo.155.1.guj

ASOBrasil

Java Examples || Useful links for web developer
[Email]
Giuliano Mega
JavaBaby

Membro desde: 22/08/2005 19:01:35
Mensagens: 94
Offline

Alberto,

A idéia é conseguir o desacoplamento entre cliente e produto que a factory te dá, mas sem ter que inventar milhares de fábricas ou uma fábrica enorme com uma interface toda inchada.

Bem, na verdade a injeção de dependências vai um pouco mais longe - você não fica nem sequer acoplado à interface da fábrica. Isso é particularmente relevante em sistemas flexíveis, onde normalmente você quer limitar o acoplamento o máximo possível.

Além disso, é compatível com a idéia de que a implementação concreta deve ser mais um dado de configuração do que qualquer outra coisa.
alberto_ribeiro
JavaEvangelist
[Avatar]

Membro desde: 01/07/2005 11:15:19
Mensagens: 351
Localização: SP
Offline

Giuliano Mega wrote:Alberto,

A idéia é conseguir o desacoplamento entre cliente e produto que a factory te dá, mas sem ter que inventar milhares de fábricas ou uma fábrica enorme com uma interface toda inchada.

Bem, na verdade a injeção de dependências vai um pouco mais longe - você não fica nem sequer acoplado à interface da fábrica. Isso é particularmente relevante em sistemas flexíveis, onde normalmente você quer limitar o acoplamento o máximo possível.

Além disso, é compatível com a idéia de que a implementação concreta deve ser mais um dado de configuração do que qualquer outra coisa.



Bom dia Giuliano Mega, aproveitando a discussão fiz um teste e queria saber se está correto dizer que estou invertendo o controle neste exemplo:



Pensei tb em outro jeito será que é mais certo ?



desde já agradeço.

Sun Certified Programmer for Java 1.5
[Email] [MSN]
TheMask
JavaBaby
[Avatar]

Membro desde: 14/04/2006 19:28:16
Mensagens: 79
Offline

Primeiro, suponho que você esteja se referindo a uma forma específica de IoC chamada de Injeção de Dependência.

alberto_ribeiro wrote:



Exatamente! Porém, o trabalho de

e

será feito pelo teu Vanilla DI Container.

alberto_ribeiro wrote:
Pensei tb em outro jeito será que é mais certo ?



desde já agradeço.


Hey, onde está a DI neste caso?

**** Demaaaaaaais ****
alberto_ribeiro
JavaEvangelist
[Avatar]

Membro desde: 01/07/2005 11:15:19
Mensagens: 351
Localização: SP
Offline

no post abaixo...

Sun Certified Programmer for Java 1.5
[Email] [MSN]
alberto_ribeiro
JavaEvangelist
[Avatar]

Membro desde: 01/07/2005 11:15:19
Mensagens: 351
Localização: SP
Offline

TheMask wrote:Primeiro, suponho que você esteja se referindo a uma forma específica de IoC chamada de Injeção de Dependência.

alberto_ribeiro wrote:



Exatamente! Porém, o trabalho de

e

será feito pelo teu Vanilla DI Container.

alberto_ribeiro wrote:
Pensei tb em outro jeito será que é mais certo ?



desde já agradeço.


Hey, onde está a DI neste caso?


Bom DIA TheMask, cara muito obrigado, vou dar uma lida no Vanilla, obrigado por analisar meu código...
e quanto ao segundo exemplo eu coloquei o new B() no construtor de A, não sabia se estava certo, neste segundo caso acho eu que fica fortemente acoplada, se eu mudar o jeito de instanciar o B vou ter que alterar minha classe A certo ???

[]'s e muito Obrigado mesmo...

Sun Certified Programmer for Java 1.5
[Email] [MSN]
TheMask
JavaBaby
[Avatar]

Membro desde: 14/04/2006 19:28:16
Mensagens: 79
Offline

Boa páscoa Alberto,

o vanilla foi apenas eu tentando brincar com o meu péssimo inglês. Ok, eu sei que o cv vai me zoar.

Nos links daquelas palavras, aparecem 4 frameworks de DI. Veja-os.

alberto_ribeiro wrote:
...
e quanto ao segundo exemplo eu coloquei o new B() no construtor de A, não sabia se estava certo, neste segundo caso acho eu que fica fortemente acoplada, se eu mudar o jeito de instanciar o B vou ter que alterar minha classe A certo ???

[]'s e muito Obrigado mesmo...


Não é uma questão de certo/errado. Você apenas não usou injeção de dependências ali.

E não é bem o jeito de instanciar B, mas principalmente se você precisar trocar B por C que extende B. Ou melhor, por C que implementa D assim como B também o faz. (Re)leia o primeiro artigo recomendado pelo ASOBrasil para uma explicação melhor.

Abs.

**** Demaaaaaaais ****
cv
Moderador
[Avatar]

Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline

alberto_ribeiro wrote:Bom DIA TheMask, cara muito obrigado, vou dar uma lida no Vanilla, obrigado por analisar meu código...


Er... "vanilla" nao eh um framework especifico. Eh qualquer framework de DI (picocontainer, spring, guice, hivemind, etc). Repare nos links no post do TheMask.

alberto_ribeiro wrote:e quanto ao segundo exemplo eu coloquei o new B() no construtor de A, não sabia se estava certo, neste segundo caso acho eu que fica fortemente acoplada, se eu mudar o jeito de instanciar o B vou ter que alterar minha classe A certo ???


Pense que vc quer instanciar A passando outra implementacao de B pra ele. Sim, vc vai ter que alterar A pra permitir isso.
[Email] [WWW] [Yahoo!] [MSN] [ICQ]
alberto_ribeiro
JavaEvangelist
[Avatar]

Membro desde: 01/07/2005 11:15:19
Mensagens: 351
Localização: SP
Offline

Opa obrigado CV, eu coloquei como se fosse um framework porque não tinha lido até o momento que respondi ao theMask...

E boa Páscoa para theMask e Cv...


obrigado pela resposta...

Sun Certified Programmer for Java 1.5
[Email] [MSN]
 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team