【C#】Proxyパターンを実装する

Proxy パターンで Proxy と RealSubject が等価で交換可能という事を忘れて変なコードを書いていたので再確認です。

以下 C# の実装例です。

// 共通インターフェース定義
public interface IProxy {
    string Foo(string message);
}

// プロキシじゃないほう
public class RealSubject : IProxy {
    public string Foo(string message) {
        return message + message;
    }
}

// プロキシのほう
public class Proxy : IProxy {
    public string Foo(string message) {
        return new RealSubject().Foo(message);
    }
}

// 利用者
public class AppMain {

    public static void Main(string[] args) {
        IProxy p = AppMain.GetInstance();
        p.Foo(args[1]);
    }

    private static IProxy GetInstance(string message) {
        return new Proxy();
    }
}