Clases alternativas con interfaces diferentes.
Dos clases realizan funciones idénticas, pero tienen nombres de método diferentes.
##Signos y síntomas
Dos clases realizan funciones idénticas, pero tienen nombres de método 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 del problema
Es probable que el programador que creó una de las clases no supiera que ya existía una clase funcionalmente equivalente.
##Tratamiento
##Beneficios
-
Te deshaces de código duplicado innecesario, lo que hace que el código resultante sea menos voluminoso.
-
El código se vuelve más legible y comprensible (ya no tienes que adivinar el motivo de la creación de una segunda clase que realiza exactamente las mismas funciones que la primera).
