Classes Alternativas com Interfaces Diferentes.
Duas classes executam funções idênticas, mas têm nomes de métodos diferentes.
##Sinais e sintomas
Duas classes executam funções idênticas, mas têm nomes de métodos diferentes.

class SmtpMailer {
private final SmtpTransport transport = new SmtpTransport();
void send(Message msg) { transport.write(msg); }
}
class EmailSender {
private final SmtpTransport transport = new SmtpTransport();
void deliver(Message msg) { transport.write(msg); }
}##Causas do problema
O programador que criou uma das classes provavelmente não sabia que uma classe funcionalmente equivalente já existia.
##Tratamento
##Benefícios
-
Você elimina código duplicado desnecessário, deixando o código resultante menos volumoso.
-
O código se torna mais legível e compreensível (você não precisa mais adivinhar o motivo da criação de uma segunda classe que executa exatamente as mesmas funções da primeira).
