C#でデザインパターン「Bridgeパターン」

C# コンピュータ
C#

Bridgeパターンを使うと、複数の要素の組み合わせの数分クラスを生成する必要があるケースで、要素をクラス化することで少ないクラス数で組み合わせを表現出来るように出来る。

ウィキペディアの「Bridgeパターン」のページ
Bridge パターン - Wikipedia

サンプルコード

/// <summary>
/// Bridgeパターンのサンプルコード
/// </summary>
interface IColor
{
    string Color {get;}
}
class RedColor : IColor
{
    public string Color {get;} = "赤";
}
class BlueColor : IColor
{
    public string Color {get;} = "青";
}
abstract class PenBase
{
    protected IColor _color;
    public PenBase(IColor color)
    {
        _color = color;
    }
    public abstract void Draw();
}
class BallpointPen : PenBase
{
    public BallpointPen(IColor color) : base(color)
    {

    }

    public override void Draw()
    {
        Console.WriteLine($"{_color.Color}色のボールペンで描く");    
    }
}
class FountainPen : PenBase
{
    public FountainPen(IColor color) : base(color)
    {

    }

    public override void Draw()
    {
        Console.WriteLine($"{_color.Color}色の万年筆で描く");    
    }
}
static class Program
{
    static public void Main()
    {
        IColor red = new RedColor();
        IColor blue = new BlueColor();

        PenBase pen1 = new BallpointPen(red);
        PenBase pen2 = new FountainPen(blue);

        pen1.Draw();
        // 赤色のボールペンで描く
        pen2.Draw();
        // 青色の万年筆で描く
    }
}

Bridgeパターンの橋は、川に架けられた橋というより、複数の小島を同士を交差させて橋渡しするイメージになります。

コメント