hier mal eine Demo mit Erläuterungen. Schau Dir mal an, wie der Data Access Layer implementiert ist:
Die Funktionen freeze() und thaw() referenzieren die Schnittstelle, also die Funktion freeze_thaw(). Während freeze(stash) die zu speichernde Datenstruktur in stash übergeben bekommt, liefert thaw() selbige aus dem Datenspeicher zurück.
Die Schnittstelle zum DAL ist also nur eine Funktion und der Code arbeitet mit Referenzen auf diese Funktion. Zu einem etwaigen Austausch des DAL wäre also nur die Referenzierung abzuändern.
MfG