:arrow: A View tem um JTextField que manda o cpf como String (números e pontos/letras).
:?: Agora vem a pergunta: Onde coloco a função de conversão de String para long? Ou seja, devo criar um set com assinatura String “setCpf(String cpf);” e trabalhar dentro dele a conversão? :idea:
:?: Agora vem a pergunta: Onde coloco a função de conversão de String para long? Ou seja, devo criar um set com assinatura String “setCpf(String cpf);” e trabalhar dentro dele a conversão? :idea:
Exatamente.
O ideal seria criar uma classe CPF que recebesse long ou String no construtor. Ajuda bastante na hora de ter que formatar o documento.
AndreAlves
Eu colocaria em uma classe de utilidades (tipo StringUtil) e chamaria na camade de controle (MVC).
pedromuyala
Ok. Crio então uma classe específica (CPFUtilits.java) para receber o CPF nas diversas formas diferentes que ele fosse passado pela View.
No caso, criaria o objeto cpfformart em UsuarioControl.java (Controle)…
// Classe UsuarioControl.javaStringCPF=view.getCPF();// "[CPF removido]"CPFUtilitscpfformat=newCPFUtilits(cpf);
…e passaria o retorno dele para o Bean usando o setCPF(long cpf).
// Classe UsuarioControl.javaUsuarioModeluser=newUsuarioModel();user.setCpf(cpfformat.getCpf());
Correto?
:?: Agora me diga: Se eu mudar a assinatura do setCPF(long cpf) para setCPF(String cpf) em UsuarioModel.java (1º post mostrado o código) e criar o objeto cpfformat dentro do set… estaria “infringindo” o Bean, criando aí sim um “Bean Suspeito”?
B
Bruno_Laturner
Colocando numa classe CPF daria pra aproveitar métodos como o toString(), que várias tecnologias do Java chamam diretamente para obter uma representação gráfica do objeto.
Sem falar que você estará encapsulando o código, o que é uma boa prática.
Outro benefício é usar métodos que tomem o tipo do dado em consideração, fazendo utilizando o sobrecarregamento de métodos para alcançar um polimorfismo maior.
Esse padrão (de projeto?) é chamado Tiny Type.
AndreAlves
Acho que uma solução interessante seria uma mistura da solução proposta pelo Bruno com a minha solução.
Colocar o método de formatação do CPF fora do bean Usuario faz com que este método possa ser reaproveitado por outras classes de negócio.
Usando o padrão proposto pelo Bruno você encapsula a regra de formatação no objeto de negócio.
pedromuyala
:idea: Então se eu criar a classe CPFUtils.java, o meu Bean (Model) ficará assim: