4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【C#】デザインパターンについて

Last updated at Posted at 2025-09-06

ちょっとずつ追加していきます。

Adapter

sample.cs
using System;
public class Hello{
    public static void Main(){
        OldMediaPlayer oldPlayer = new OldMediaPlayer();
        MediaPlayer player = new MediaAdapter(oldPlayer);
        
        player.play("song.mp3");
    }
}

//既存のインターフェース(Adaptee)
class OldMediaPlayer
{
    public void playOldMedia(string fileName)
    {
        Console.WriteLine("Playing old media:" + fileName);
    }
}

//新しいインターフェース(Target)
interface MediaPlayer
{
    void play(string fileName);
}

//Adapterクラス
class MediaAdapter : MediaPlayer
{
    private OldMediaPlayer oldMediaPlayer;
    public MediaAdapter(OldMediaPlayer oldMediaPlayer)
    {
        this.oldMediaPlayer = oldMediaPlayer;
    }
    
    
    public void play(string fileName)
    {
        oldMediaPlayer.playOldMedia(fileName);
    }
}

解説

このコードのMediaAdapterクラスは、アダプターデザインパターンにおける「アダプター」の役割を担っています。
アダプターは、互換性のない2つのインターフェースを橋渡しする仲介役のことです。

アダプタークラスの役割

MediaAdapterクラスの役割を、日常生活の例で考えてみましょう。

状況:

あなたは最新のメディアプレイヤー(MediaPlayerインターフェース)を使いたい。このプレイヤーは、playというボタン(メソッド)を持っています。

しかし、あなたが持っている古いメディアデバイス(OldMediaPlayer)は、playOldMediaという別のボタンしかありません。

このままでは、最新プレイヤーのplayという指示を、古いデバイスは理解できません。そこで、アダプターが登場します。

アダプターの働き:

MediaAdapterクラスは、このギャップを埋めるための通訳者(アダプター)です。

古いデバイスを保持する:

MediaAdapterは、内部に古いデバイスのインスタンス(oldMediaPlayer)を持っています。

新しいインターフェースを実装する:

MediaAdapterは、最新プレイヤーのMediaPlayerインターフェースを実装します。
これにより、外部からはplayというボタンを持っているように見えます。

指示を変換する:

MediaAdapterplayメソッドが呼び出されると、その内部で古いデバイスのplayOldMediaメソッドを呼び出します。

これにより、外部のコードはMediaPlayerインターフェースを通じてplayメソッドを呼び出すだけで、アダプターが裏側で古いデバイスのplayOldMediaメソッドに処理を振り分けてくれます。

まとめると、MediaAdapterは、古いデバイス(OldMediaPlayer)を、新しいインターフェース(MediaPlayer)のルールに適合させるための「変換機」として機能しているのです。
これにより、既存の古いコードを活かしつつ、新しいシステムに統合することが可能になります。

サイト

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?