Last active
February 22, 2024 11:42
-
-
Save alexjosesilva/bf419b5d57bfc54ad6aa5dab63648c93 to your computer and use it in GitHub Desktop.
Adapter
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Interface alvo (target) | |
interface Pessoa { | |
String getNome(); | |
String getIdentificador(); | |
} | |
// Classe adaptada - Pessoa Física | |
class PessoaFisica { | |
private String nome; | |
private String cpf; | |
public PessoaFisica(String nome, String cpf) { | |
this.nome = nome; | |
this.cpf = cpf; | |
} | |
public String getNome() { | |
return nome; | |
} | |
public String getCpf() { | |
return cpf; | |
} | |
} | |
// Classe adaptada - Pessoa Jurídica | |
class PessoaJuridica { | |
private String nomeFantasia; | |
private String cnpj; | |
public PessoaJuridica(String nomeFantasia, String cnpj) { | |
this.nomeFantasia = nomeFantasia; | |
this.cnpj = cnpj; | |
} | |
public String getNomeFantasia() { | |
return nomeFantasia; | |
} | |
public String getCnpj() { | |
return cnpj; | |
} | |
} | |
// Adapter para Pessoa Física | |
class PessoaFisicaAdapter implements Pessoa { | |
private PessoaFisica pessoaFisica; | |
public PessoaFisicaAdapter(PessoaFisica pessoaFisica) { | |
this.pessoaFisica = pessoaFisica; | |
} | |
@Override | |
public String getNome() { | |
return pessoaFisica.getNome(); | |
} | |
@Override | |
public String getIdentificador() { | |
return pessoaFisica.getCpf(); | |
} | |
} | |
// Adapter para Pessoa Jurídica | |
class PessoaJuridicaAdapter implements Pessoa { | |
private PessoaJuridica pessoaJuridica; | |
public PessoaJuridicaAdapter(PessoaJuridica pessoaJuridica) { | |
this.pessoaJuridica = pessoaJuridica; | |
} | |
@Override | |
public String getNome() { | |
return pessoaJuridica.getNomeFantasia(); | |
} | |
@Override | |
public String getIdentificador() { | |
return pessoaJuridica.getCnpj(); | |
} | |
} | |
// Classe principal para testar o padrão Adapter | |
public class Main { | |
public static void main(String[] args) { | |
// Criando objetos das classes adaptadas | |
PessoaFisica pessoaFisica = new PessoaFisica("João", "123.456.789-00"); | |
PessoaJuridica pessoaJuridica = new PessoaJuridica("Empresa XYZ", "12.345.678/0001-90"); | |
// Adaptando objetos para a interface alvo (target) | |
Pessoa adaptada1 = new PessoaFisicaAdapter(pessoaFisica); | |
Pessoa adaptada2 = new PessoaJuridicaAdapter(pessoaJuridica); | |
// Testando a interface alvo com os objetos adaptados | |
System.out.println("Pessoa Física:"); | |
System.out.println("Nome: " + adaptada1.getNome()); | |
System.out.println("Identificador: " + adaptada1.getIdentificador()); | |
System.out.println(); | |
System.out.println("Pessoa Jurídica:"); | |
System.out.println("Nome: " + adaptada2.getNome()); | |
System.out.println("Identificador: " + adaptada2.getIdentificador()); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment