vou te dar o exemplo do livro The Design Patterns - Java Compainion. Suponha que vc tenha um objeto que modele sua empresa. Suponha que esta empresa seja composta por diversos empregados. Logo, a sua classe Empresa haverá uma referência para uma Collection de Empregados. public class Empresa { public Empregado[] empregados; } public class Empregado { protected String nome; protected int salario; public String getNome()... public int getSalario()... public void setNome()... public void setSalario()... } Agora, suponha que vc queira, por algum motivo, calcular os gastos da sua empresa com salários. Ora, a abordagem mais natural seria fazer um laço de repetição que fizesse um somatório dos salários individuais através do método getSalario() mas, como o que queremos é demonstrar o Visitor, utilizazá-lo-emos. :o) A idéia é que tenhamos um objeto que visite todos os empregados da empresa e vá calculando os custos parciais. public abstract class Visitor { public abstract void visit(Empregado emp); } desta forma, podemos criar uma classe mais especializada: public class SalaryVisitor extends Visitor { protected int salarioTotal; public void visit(Empregado emp) { salarioTotal =+ emp.getSalario(); } public int getSalarioTotal() { return salarioTotal; } } O funcionamento é o seguinte: para uma classe ser visitada, ela deve implementar algum método que possibilite esta visita. public void accept(Visitor v) { v.visit(this) } Deu pra entender mais ou meons a idéia ? Para um Visitor visitar alguém, ele chama o método accept daquele alguém. Por fim, o objeto visitado retorna uma chamada ao método visit do Visitor passando uma referência de si mesmo como parâmetro. +---------+ visited.accept(this) +---------+ | | ----------------------> | | | Visitor | <---------------------- | Visited | | | v.visit(this) | | +---------+ +---------+ Ok, e agora, como faremos as visitas ? Assim, ó: //No cliente SalaryVisitor sal = new SalaryVisitor(); for (int i = 0; i < empregados.length; i++) { empregados[i].accept(sal); } System.out.println("Orçamento com salários = " + sal.getSalarioTotal(); Você deve estar se perguntando por quê devemos implementar o método visit(Empregado). Considere que existe um tipo de empregado, o Chefe, que além do salário comum ainda possua uma gratificação: public class Chefe extends Empregado { protected int gratificacao; public int getGratificacao() { return gratificacao; } public void accept(Visitor v) { v.visit(this); } } Aí o Visit deverá ter algumas modificações public class SalaryVisitor extends Visitor { protected int salarioTotal; public void visit(Empregado emp) { salarioTotal =+ emp.getSalario(); } public void visit(Chefe chf) { salarioTotal = salarioTotal + chf.getSalario() + chf.getGratificacao(); } public int getSalarioTotal() { return salarioTotal; } } O exemplo não é dos melhores, mas é mais fácil de visualizar a utilização. Para maiores (e melhores) informações, veja em http://www.labsoftware.com/Patterns/index.htm By Alê! -----Mensagem original----- De: Jorge Martins [mailto:[EMAIL PROTECTED]] Enviada em: terça-feira, 3 de abril de 2001 12:19 Para: '[EMAIL PROTECTED]' Assunto: RE: [java-list] tags libraries ou java beans? - (de quebra uma p roposta para aumentarmos nossos conhecimentos) Pode me dar um exemplo mais específico? Não saquei o exemplo do livro. Na verdade nem consegui lê-lo direito, acho por ser o último padrão. :) De qualquer forma, vou estudá-lo melhor. abraços Jorge -----Original Message----- From: Alexandre Rodrigues Gomes [mailto:[EMAIL PROTECTED]] Sent: segunda-feira, 2 de abril de 2001 17:49 To: '[EMAIL PROTECTED]' Subject: RES: [java-list] tags libraries ou java beans? - (de quebra uma p roposta para aumentarmos nossos conhecimentos) Jorge, o que vc não entendeu no Visitor ? O Visitor é legal quanto vc deseja efetuar alguma operação num conjunto de objetos e a operação em cada objeto depende da classe que o instanciou. By Alê! -----Mensagem original----- De: Jorge Martins [mailto:[EMAIL PROTECTED]] Enviada em: segunda-feira, 2 de abril de 2001 12:54 Para: '[EMAIL PROTECTED]' Assunto: RE: [java-list] tags libraries ou java beans? - (de quebra uma p roposta para aumentarmos nossos conhecimentos) Talvez você não esteja procurando exatamente um Design Pattern. Pode ser que você deseje um framework. Design Pattern é um padrão de desenho de software com objetivo de resolver problemas recorrentes de modelagem. Coisas como criação hardcoded de instâncias, flexibilidade para uso de plataformas e bibliotecas, etc. São problemas bem gerais presentes na maioria das modelagens. Framework é um conjunto de classes (um "upgrade" das antigas bibliotecas) com objetivo de modelar um conjunto de regras de negócios comum a um escopo específico. Há frameworks para Financeiros, Compiladores, Jogos, etc... O Collection da Sun é um exemplo de framework de coleções. Compre o livro Design Patterns - Elements of Reusable Object-Oriented Software, da Gang of Four. Vale muito a pena, excelente livro. Ele discute muito bem padrões de desenho e apresenta os 23 padrões fundamentais para um desenvolvedor. Só não espere moleza. Ontem mesmo estava relendo o livro e vislumbrei vários detalhes que não tinha percebido e continuo sem entender certos pontos, como o padrão Visitor. abraços Jorge -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]] Sent: domingo, 1 de abril de 2001 01:08 To: [EMAIL PROTECTED] Subject: [java-list] tags libraries ou java beans? - (de quebra uma proposta para aumentarmos nossos conhecimentos) boa madru para todos , Bom, estou lembrando agora, estou com umas duvidas. Se alguem quiser responder: 1 - Atualmente estou usando java beans para separar o codigo da apresentacao de minhas paginas jsp. Li na revista Java-Pro sobre as Tags Libraries, mas nao entendi bem. Estou confuso pois na revista fala que estas Tags serao a nova forma de separar codigo de apresentacao. E os java beans , o que serah deles? E como poderei reutilizar estas Tags Libraries por exemplo em um aplicativo StandAlone? 2 - Outra duvida de iniciante: Desing patterns (DP) Li que existem varios DPs e cada um pode ser aplicado para cada tipo de aplicacao. Bom, eu gostaria de saber, qual eh o DP mais apropriado para sistemas WEB, digo , feitos em JSP.? gente, eu tambem gostaria de trocar alguns codigos de sistemas jsp com voces da lista... estou me sentindo um idiota trabalhando sozinho, e gostaria de ver como voces estao programando para a web. esta semana fui em outra empresa e achei hiper interessante o trabalho em grupo, gente mechendo com design patterns, uml, ferramentas interessantes... Eu fico meio que ilhado sendo um programador sem equipe. Talvez pudessemos trocar umas ideias de o que usamos, como usamos, quais metodologias aplicamos, etc. obrigado e boa noite a todos.... --- UOL: o melhor da Internet. ------------------------------ LISTA SOUJAVA ---------------------------- http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm para sair da lista: envie email para [EMAIL PROTECTED] ------------------------------------------------------------------------- ------------------------------ LISTA SOUJAVA ---------------------------- http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm para sair da lista: envie email para [EMAIL PROTECTED] ------------------------------------------------------------------------- ------------------------------ LISTA SOUJAVA ---------------------------- http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm para sair da lista: envie email para [EMAIL PROTECTED] ------------------------------------------------------------------------- ------------------------------ LISTA SOUJAVA ---------------------------- http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm para sair da lista: envie email para [EMAIL PROTECTED] ------------------------------------------------------------------------- ------------------------------ LISTA SOUJAVA ---------------------------- http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm para sair da lista: envie email para [EMAIL PROTECTED] -------------------------------------------------------------------------