アダプターパターン(継承)

 継承を利用したアダプターパターンは、新しいものと古いものを結びつけ、変更を最小限に抑えるデザインの方法です。 この例では、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ケーブルで充電開始