Quando o Java se aprofundará em um determinado nível, inevitavelmente encontrará o conceito de padrão de design. O modo de design é amplamente utilizado nos sistemas de tamanho médio Java. Nos sistemas de comércio eletrônico, então quero analisar a aplicação do Observer a partir de exemplos de comércio eletrônico.
Embora as lojas on -line sejam diversas em forma e cada site tenha suas próprias características, ele também tem sua semelhança geral. .
Especificamente, se o produto na loja on -line mudar em termos de nome e preço, e se o sistema puder notificar automaticamente os membros, será um importante recurso da loja on -line que distingue entre as lojas tradicionais. Isso requer a adição da função do observador ao produto do produto, para que, quando os detalhes do produto mudem, o observador possa observar automaticamente essa alteração e executar a atualização oportuna ou notificar ações.
O Java API também nos fornece uma interface de observador pronta para uso java.util.observer. Só precisamos usá -lo diretamente.
Temos que estender Java.util.observer para realmente usá -lo:
1. Forneça o método de add/excluir observador;
2. Forneça métodos de notificação (Notisfy) para todos os observadores.
A cópia do código é a seguinte:
// A classe de produto pode ser usada diretamente pelo JSP para ligar para a classe usando o USEBEAN.
A classe pública produto estende observável {
nome de string privado;
Preço de flutuação privada;
public String getName () {Return Name;}
public void setName () {
this.name = nome;
// defina o ponto de alteração setChanged ();
notifyObServers (nome);
}
public float getPrice () {Return Price;}
public void setPrice () {
this.price = preço;
// defina o ponto de alteração setChanged ();
notifyObServers (New Float (preço));
}
// O seguinte pode ser o comando Inserir Atualização do banco de dados.
public void SaveTodb () {
.............
}
}
Percebemos que, no método setxxx na classe de produto, definimos o método Notify.
Aqui está uma olhada nos códigos desses observadores, o que exatamente eles levaram:
A cópia do código é a seguinte:
// Observer NameObserver é usado principalmente para observar o nome do produto (nome).
classe pública NameObserver implementa observador {
Nome da string privada = nulo;
public void update (obsertable obj, objeto arg) {
if (arg instanceof string) {
nome = (string) arg;
// O nome do nome do produto é o valor do nome System.out.println ("NameObserver: alteração de nome para"+nome);
}
}
}
// Observer PriceObserver é usado principalmente para observar os preços dos produtos.
classe pública PriceObServer implementa observador {
Preço de flutuação privada = 0;
public void update (obsertable obj, objeto arg) {
if (arg instanceof float) {
preço = ((float) arg) .floatValue ();
System.out.println ("PriceObserver: alteração de preço para"+preço);
}
}
}
No JSP, podemos executar oficialmente este programa de observador:
A cópia do código é a seguinte:
<jsp: useBean id = "Product" Scope = "Session" />
<jsp: setProperty name = "Product" Property = "*" />
<jsp: usebean id = "nameobs" scope = "session" />
<jsp: setProperty name = "Product" Property = "*" />
<jsp: usebean id = "priceobs" scope = "session" />
<jsp: setProperty name = "Product" Property = "*" />
<%
if (request.getParameter ("salvar")! = nulo)
{
Product.Savetodb ();
out.println ("Alterações nos dados do produto são salvas! e o cliente foi notificado automaticamente");
}outro{
// Adicionar ao Observer Product.AdDobServer (NameBoBs);
Product.AdDOBSERVER (PRESCOBS);
%>
//request.getRequesturi () é o nome do programa que gera este JSP, o que significa chamar a si mesmo <formulário action = "<%= request.getRequesturi ()%>" método = post>
<Tipo de entrada = Nome oculto = "Salvar" Value = "1">
Nome do produto: <Tipo de entrada = Nome do texto = "Nome">
Preço do produto: <Tipo de entrada = Nome do texto = "Preço">
<Tipo de entrada = Enviar>
</morm>
<%
}
%>
Ao executar o programa JSP, uma interface de entrada de formulário aparecerá. do JSP.
Como o conceito automático de atribuição de dados Javabeans é usado aqui, o programa real executa automaticamente a instrução SetName SetPrice. Você encontrará as seguintes informações no console do servidor:
A cópia do código é a seguinte:
NameObserver: Nome Alterar para ???? (o nome do produto inserido no formulário JSP)
PriceObserver: alteração de preço para ??? (o preço do produto inserido no formulário JSP);
Isso mostra que o observador já está atuando.
Ao mesmo tempo, você obterá informações no navegador onde executa o JSP:
1. Salvar as alterações dos dados do produto! E notificará automaticamente os clientes
Como o artigo acima usa o conceito de JSP, ele implica muitas ações automáticas.
A cópia do código é a seguinte:
Teste de classe pública {
public static void main (string args []) {
Produto Produto = New Product ();
NameObServer NameObs = new NameObServer ();
PriceObServer priceObs = new PriceObServer ();
// Adicionar ao Observer Product.AdDobServer (NameBoBs);
Product.AdDOBSERVER (PRESCOBS);
Product.SetName ("Orange Is Red");
Product.SetPrice (9.22f);
}
}
Você encontrará as seguintes informações:
NameObserver: Nome Alterar para Orange Is Red
PriceObserver: Alteração de preço para 9.22
Isso mostra que o observador está agindo.