Adapter
Een adapter vertaalt tussen verschillende interfaces zodat jouw code één uniforme manier houdt om een taak uit te voeren, zelfs als achterliggende libraries anders werken.
Situatie
Stel: je hebt een WhatsApp-, Signal- en Telegram-library. Ze versturen allemaal berichten maar met andere methoden en parameter-namen. Een adapter legt één laag erboven met een generieke sendMessage($message) zodat de rest van je code geen library-details hoeft te kennen.
Hypothetische adapter-implementatie
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class WhatsAppClient {
public function sendWhatsApp(string $message): void {}
}
class SignalClient {
public function sendSignal(string $message): void {}
}
class TelegramClient {
public function sendTelegram(string $message): void {}
}
class MessageAdapter {
public function __construct(private WhatsAppClient $wa, private SignalClient $si, private TelegramClient $tg) {}
public function sendMessage(string $message): void
{
// Kies een kanaal of loop eroverheen
$this->wa->sendWhatsApp($message);
$this->si->sendSignal($message);
$this->tg->sendTelegram($message);
}
}
- Aanroepers gebruiken alleen sendMessage; wisselen van library breekt je applicatie niet.
- Adapters zijn ideaal bij legacy code of third-party libraries met afwijkende signatures.
Navigatie
- Cursus informatie
- Voor de docent
- Contact formulier laten werken
- Focus en doel
- Ssh keys instellen
- Gitlab checkout
- Design uniek maken
- Omgeving instellen
- Kennistest
- Server starten
- Rondleiding
- Les 3 inhoud aanpassen
- Registreren
- Codebase updaten
- Unit tests draaien
- Webserver starten
- Home pagina basics
- Home pagina skills
- Home pagina overig
- Design patterns
- Zoek uit wat singleton is
- Adapter toepassing
- Factory gebruiken
- Adapter
- Factory
- Singleton