[quote=Ruttmann]
No meu caso, tenho que simular um Computador.
O meu problema é esse: Tenho uma classe PortaParalela. Na PortaParalela posso acoplar tanto um Leitor(CD ou DVD por exemplo) como um DispositivoArmazenamentoParalelo(um HD por exemplo).
Por isso veio a idéia de criar uma interface que une Leitor e DispositivoArmazenamento, e fazer com que PortaParalela receba qualquer dispositivo que implemente tal interface.[/quote]
Mas existe algum método que você queira usar, como “salvar(Arquivo arquivo)”, “ler(Arquivo arquivo)”, “remover(Arquivo arquivo)”?
Dê uma olhadinha na Lei de Demeter, acho que ela é a saída que você procura.
Por exemplo, temos a classe Pessoa e a classe Endereço:
class Pessoa {
private String nome;
private Endereco endereco;
// getters e setters
}
class Endereco {
private String rua;
private int numero;
private String cep;
// getters e setters
}
Então para acessar o cep de uma pessoa, você precisa fazer assim:
pessoa.getEndereco().getCep();
Isso gera um custo elevado de manutenção. Vamos supor que vamos criar a classe CEP e dentro dela o getCepFormatado() iria formatar o cep para nós… Teríamos que alterar todos os lugares que fazem o getCep() para incluir um .getCepFormatado()…
Portanto, seria menos custoso manter um código que fizesse assim:
pessoa.getCep();
Pois assim, só precisaria mexer na classe Pessoa… Para que isso aconteça, as nossas classes precisam ficar assim:
class Pessoa {
private String nome;
private Endereco endereco;
// Construtor para setar
public String getNome() {
return nome;
}
public String getCep() {
return endereco.getCep();
}
}
class Endereco {
private String rua;
private int numero;
private String cep;
// getters e setters
}
E depois de arrumado, ficaria assim:
class Pessoa {
private String nome;
private Endereco endereco;
// Construtor para setar
public String getNome() {
return nome;
}
public String getCep() {
return endereco.getCepFormatado();
}
}
class Endereco {
private String rua;
private int numero;
private CEP cep;
// Construtor para setar
public String getCepFormatado() {
return cep.getCepFormatado();
}
// outros getters
}
class CEP {
private primeirosDigitos;
private ultimosDigitos;
// Construtor para setar
public String getCepFormatado() {
return primeirosDigitos + "-" + ultimosDigitos;
}
}