Classes alternatives avec des interfaces différentes.
Deux classes remplissent des fonctions identiques mais ont des noms de méthodes différents.
##Signes et symptômes
Deux classes remplissent des fonctions identiques mais ont des noms de méthodes différents.

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); }
}##Causes du problème
Le programmeur qui a créé l'une des classes ne savait probablement pas qu'une classe fonctionnellement équivalente existait déjà.
##Traitement
##Bénéfices
-
Vous éliminez le code dupliqué inutile, ce qui rend le code obtenu moins volumineux.
-
Le code devient plus lisible et compréhensible (vous n'avez plus à deviner la raison de la création d'une deuxième classe qui remplit exactement les mêmes fonctions que la première).
