Desculpe, mandei o link errado. Este é o correto.

http://www.patterndepot.com/put/8/JavaPatterns.htm 

By Alê!

-----Mensagem original-----
De: Alexandre Rodrigues Gomes 
Enviada em: quarta-feira, 4 de abril de 2001 11:42
Para: '[EMAIL PROTECTED]'
Assunto: Visitor


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]
-------------------------------------------------------------------------

Responder a