Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Padrão Iterator

2,345 views

Published on

  • Be the first to comment

  • Be the first to like this

Padrão Iterator

  1. 1. Design Patterns<br />
  2. 2. Padrão Iterator<br />Fornece uma maneira de acessar seqüencialmente os elementos de um objeto agregado sem expor a sua representação subjacente. <br />Delega a tarefa de acesso seqüencial ao objeto iterador e não ao agregado, o que simplifica a interface e a implementação. <br />
  3. 3. publicclassRestauranteDoLui {<br />ArrayList<MenuItem> menuItens;<br />publicRestauranteDoLui() {<br />menuItens = newArrayList<MenuItem>();<br />addItem("Nhoque", false, 13.59);<br />addItem("Peixe grelhado", false, 3.59);<br /> addItem("Frango a milanesa", false, 3.59);<br />privatevoidaddItem(_,_,_) <br />MenuItem item = newMenuItem(_,_,_);<br />menuItens.add(item);<br />
  4. 4. publicclassRestauranteDoRodrigo {<br />static final intMAX_ITENS = 6;<br />intquantidadeDeItens = 0;<br />MenuItem[] menuItens;<br />publicRestauranteDoRodrigo() <br />this.menuItens = newMenuItem[MAX_ITENS];<br />addItem("Arroz a grega", false, 4.99);<br />addItem("Feijoada", false, 14.99);<br />addItem("Peixe grelhado", false, 17.50);<br />privatevoidaddItem(String descricao, booleanisVegetariano, doublepreco) <br />MenuItemmenuItem = newMenuItem(descricao, isVegetariano, preco);<br />if(this.quantidadeDeItens >= MAX_ITENS){<br /> System.err.println("Desculpe, O menu já está cheio de itens.");<br /> }else{<br />menuItens[this.quantidadeDeItens] = menuItem;<br />this.quantidadeDeItens++;<br />
  5. 5. publicclassGarconete {<br />publicvoidimprimirTodosItensDoMenu(){<br />RestauranteDoLuirestDoLui = newRestauranteDoLui();<br />ArrayList<MenuItem> itensDoLui = restDoLui.getMenuItens();<br /> for (int i = 0; i < itensDoLui.size(); i++) <br />MenuItemitemDoLui = itensDoLui.get(i);<br /> System.out.println("Descrição: "+itemDoLui.getDescricao()+" é vegetariano: "+ itemDoLui.isVegetarianoString() + " preço: R$ ");<br />RestauranteDoRodrigorestDoRod = newRestauranteDoRodrigo();<br />MenuItem[] itensDoRod = restDoRod.getMenuItens();<br /> for (int i = 0; i < itensDoRodrigo.length; i++) {<br />MenuItemitemDoRodrigo = itensDoRodrigo[i];<br /> System.out.println("Descrição: "+itemDoRodrigo.getDescricao()+" é vegetariano: "+ itemDoRodrigo.isVegetarianoString() + " preço: R$ ");<br />
  6. 6. public interface Iterador {<br />booleanhasNext();<br />Objectnext();<br /> }<br />
  7. 7. public class IteradorRod implements Iterador<br />MenuItem[] itens;<br />intposicao = 0;<br />publicIteradorRod(MenuItem[] itens) <br />this.itens = itens;<br /> @Override<br />publicbooleanhasNext() <br />if(posicao >= itens.length || itens[posicao] == null){<br />returnfalse;<br /> }else{<br />returntrue;<br /> @Override<br />publicObjectnext() <br />MenuItemmenuItem = itens[posicao];<br />posicao++;<br />returnmenuItem;<br />
  8. 8. public class IteradorLui implements Iterador {<br />ArrayList<MenuItem> itens;<br />intposicao = 1;<br />publicIteradorLui(ArrayList<MenuItem> menuItens) <br />this.itens = menuItens;<br /> @Override<br />publicbooleanhasNext() <br />if(posicao >= itens.size() || itens.get(posicao) == null){<br />returnfalse;<br />}else{<br />returntrue;<br />@Override<br />publicObjectnext() <br />MenuItemmenuItem = itens.get(posicao);<br />posicao++;<br />returnmenuItem;<br />
  9. 9. publicclassGarconeteMelhorada {<br />RestauranteDoLuirestauranteDoLui;<br />RestauranteDoRodrestauranteDoRod;<br />publicGarconeteMelhorada(RestauranteDoLui, RestauranteDoRod) {<br /> .........;<br />publicvoidimprimirMenu(){<br />IteradoriteradorDoLui = restauranteDoLui.criarIterador();<br />IteradoriteradorDoRod = restauranteDoRod.criarIterador();<br /> System.out.println("Menu do Lui");<br />imprimirMenu(iteradorDoLui);<br /> System.out.println("Menu do Rod");<br />imprimirMenu(iteradorDoRod);<br />privatevoidimprimirMenu(Iteradoriterador) {<br />while (iterador.hasNext()) {<br />MenuItem item = (MenuItem) iterador.next();<br /> System.out.println("Descrição: "+item.getDescricao()+" é vegetariano: "+ item.isVegetarianoString() + " preço: R$ "+item.getPreco());<br />
  10. 10. Obrigado !<br />

×