Blz,
Aqui tenho feito o seguinte (uso Faces):
tenho uma classe que representa o meu modelo de dados do banco:
public class Pedido {
private Long idPedido;
private Cliente cliente;
private Date dataCompra;
...
}
Tenho então um repositorio para consultas
public class RepositorioPedidos{
public List<Pedido> listarPedidosDoCliente(Cliente cliente){...}
public Pedido recuperarPedidoPorCodigo(Long codigo){...}
}
Por fim tenho a minha camada de negócios
public class ServicoDeOrcamento{
public efetuarNovoPedido(Cliente cliente,Pedido pedido){
PedidoRepositorio pr = new PedidoRepositorio();
List<Pedido> pedidos = pr.listarPedidosDoCliente(cliente);
if (pedidos.size() ==0) {
// cliente novo não fez nenhum pedido ir para analise de crédito
}
// salva novo pedido do cliente e faz mais alguma coisa
}
}
Ai no final eu crio uma camada WEB para acessar o serviço:
public class BeanFormOrcamento {
public fazerPedidoCliente(Long idCliente,Pedido pedido){
RepositorioCliente rc = new RepositorioCliente();
Cliente cliente = rc.recuperarClientePorCodigo(idCliente);
ServicoDeOrcamento so = new ServicoDeOrcamento();
so.efetuarNovoPedido(cliente,pedido);
}
}
Desta forma basta eu fazer outra VIEW em SWT que toda a minha lógica de negócio foi aproveitada. Não Preciso reescrever a lógica ou adapta-la, basta usar.
Ps. Adapter é um padrão que é usando quando se deseja adaptar sua classe para ser usada por outro objeto. exemplo:
Sua tomada em casa é de 2 pinos, mas o computador é de 3 pinos então usa-se um adaptador para ligar na tomada (beijamin).
O mesmo em Software:
tenho o seguinte problema:
Preciso comparar uma array de bytes com regex. só que regex somente aceita objetos do tipo CharSequence.
byte[] sca = "helo carlos".getBytes();
Pattern p = Pattern.compile("^(?i)(helo) .+");
Matcher m = p.matcher(sca);
return m.matches();
o código acima vai da erro, mas eu preciso usar array de bytes. o que fazer?
use um adaptador (Adapter) que adapta a array para ser usada como uma CharSequence, veja a interface da charSequence:
public interface CharSequence {
int length();
char charAt(int index);
CharSequence subSequence(int start, int end);
public String toString();
}
Aqui está o adaptador:
public class CharSequenceByteArray implements CharSequence {
private byte[] buffer;
public CharSequenceByteArray(byte[] buffer) {
this.buffer = buffer;
}
public int length() {
return buffer.length;
}
public char charAt(int index) {
return (char) buffer[index];
}
public CharSequence subSequence(int start, int end) {
return new CharSequenceByteArray(Arrays.copyOfRange(buffer, start, end));
}
}
agora eu faço assim uso o adaptador:
byte[] sca = "helo carlos".getBytes();
Pattern p = Pattern.compile("^(?i)(helo) .+");
Matcher m = p.matcher(new CharSequenceByteArray(sca));
return m.matches();
Este código não da erro, porque eu adaptei uma interface em outra.
Isto é o padrão adapter.
att. Carlos