んで、実際につかう部分では、newするクラスだけを変更します。たったこれだけで振る舞いを変えられる。すごいね。
public class Main { public static void main(String[] args) { Foo foo = new FooProxy(); // ここだけ変わる foo.foo(); foo.bar(); foo.baz(); } }