PG日誌

読者です 読者をやめる 読者になる 読者になる

PG日誌

主にc#の事を書いています

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();
    }
}