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