0
Inversion of controlThe Dependency Injection patternBruno Lui
Introdução* Padrão comum entre frameworks* Objetivo de fazer a amarração entre componentes* Frameworks começam a fornecer ...
Exemplo inicialclass MovieLister...    public Movie[] moviesDirectedBy(String arg) {        List allMovies = finder.findAl...
Extraindo uma interface e criando implementaçãopublic interface MovieFinder{List findAll() ;}class MovieLister...   privat...
As dependências
Injeção de dependências- Ter um objeto separado, o montador (assembler).- Popula um campo em um objeto (lister) com umaimp...
Exemplo com PicoContainer     class MovieLister...                          class ColonMovieFinder...        public MovieL...
Exemplo com Springclass MovieLister...   private MovieFinder finder;                 class ColonMovieFinder...            ...
Referênciashttp://martinfowler.com/articles/injection.htmlhttp://javafree.uol.com.br/artigo/871453/Inversion-Of-Control-Co...
Upcoming SlideShare
Loading in...5
×

Inversion of control

1,132

Published on

Presentation about IoC

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,132
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
14
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "Inversion of control"

  1. 1. Inversion of controlThe Dependency Injection patternBruno Lui
  2. 2. Introdução* Padrão comum entre frameworks* Objetivo de fazer a amarração entre componentes* Frameworks começam a fornecer soluções
  3. 3. Exemplo inicialclass MovieLister... public Movie[] moviesDirectedBy(String arg) { List allMovies = finder.findAll(); for (Iterator it = allMovies.iterator(); it.hasNext();) { Movie movie = (Movie) it.next(); if (!movie.getDirector().equals(arg))                it.remove(); } return (Movie[]) allMovies.toArray(new Movie[allMovies.size()]);    }
  4. 4. Extraindo uma interface e criando implementaçãopublic interface MovieFinder{List findAll() ;}class MovieLister... private MovieFinder finder; public MovieLister () { finder = new ColonDelimitedMovieFinder("movies1.txt"); }
  5. 5. As dependências
  6. 6. Injeção de dependências- Ter um objeto separado, o montador (assembler).- Popula um campo em um objeto (lister) com umaimplementação apropriada para uma interface (finder). Existem três tipos principais- Constructor Injection (Injeção por Construtores)- Setter Injection (Injeção por Métodos Set)- Interface Injection (Injeção por Interfaces).
  7. 7. Exemplo com PicoContainer class MovieLister... class ColonMovieFinder... public MovieLister(MovieFinder finder) { public ColonMovieFinder(String filename) { this.finder = finder; this.filename = filename; } }private MutablePicoContainer configureContainer() { MutablePicoContainer pico = new DefaultPicoContainer(); Parameter[] finderParams = { new ConstantParameter("movies1.txt")}; pico.registerComponentImplementation(MovieFinder.class, ColonMovieFinder.class, finderParams); pico.registerComponentImplementation(MovieLister.class); return pico;}
  8. 8. Exemplo com Springclass MovieLister... private MovieFinder finder; class ColonMovieFinder... public void setFilename(String filename) { public void setFinder (MovieFinder finder) { this.filename = filename; this.finder = finder; } } <beans> <bean id="MovieLister" class="spring.MovieLister"> <property name = "finder"> <ref local = "MovieFinder" / > < / property> < / bean> <bean id="MovieFinder" class="spring.ColonMovieFinder"> <property name = "filename"> <value>movies1.txt< / value> < / property> < / bean> < / beans>
  9. 9. Referênciashttp://martinfowler.com/articles/injection.htmlhttp://javafree.uol.com.br/artigo/871453/Inversion-Of-Control-Containers-de-Inversao-de-Controle-e-o-padrao-Dependency-Injection.htmlhttp://imasters.com.br/artigo/4497/spring_framework_introducao
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×