継承を利用したアダプターパターンは、新しいものと古いものを結びつけ、変更を最小限に抑えるデザインの方法です。 この例では、iPhone 14 ProとiPhone 15の充電方法を示しています。
iPhone 14 Proは、古いLightningケーブルを使用して充電します。
新しい「Charger」インターフェースに合わせるため、アダプターパターンが使われています。
これにより、既存のコードを変更せずに新しい充電方式を採用できます。
一方、iPhone 15は古いUSB Type-Cケーブルを使用して充電しますが、すでに「Charger」インターフェースに合致しているため、アダプターパターンは必要ありません。
継承を利用したアダプターパターンは、既存のものと新しいものをうまく調整し、システムを柔軟に拡張できる手法です。
<?php
interface Charger
{
public function charge(): void;
}
<?php
class IPhone14
{
public function chargeLightningConnector(): void
{
echo 'Lightningケーブルで充電開始' . PHP_EOL;
}
}
<?php
class IPhone14Pro extends IPhone14 implements Charger
{
public function charge(): void
{
$this->chargeLightningConnector();
}
}
<?php
class IPhone15 implements Charger
{
public function charge(): void
{
echo 'USB Type-Cケーブルで充電開始' . PHP_EOL;
}
}
<?php
$iPhone14Pro = new IPhone14Pro();
$iPhone14Pro->charge(); // Lightningケーブルで充電開始
$iPhone15 = new IPhone15();
$iPhone15->charge(); // USB Type-Cケーブルで充電開始