Das Problem Man hat eine Klasse (als Interface-Spezifikation) und eine Anzahl von Subklassen (als Implementationen) Beispiel:

Mailinglist (Mail-Adressen, Passwörter, Status, Archiv, Index) in einer Datenbank gespeichert.

Wegen Unterschieden der Datenbank gibt es pro DB eine Subklasse:

MailingList::Oracle, MailingList::MySQL, MailingList::Pg, ...

Man möchte "automatisch" die richtige Subklasse bekommen.