ところで、チョット違う話ですが、FooProxyクラスのFooImpleへの依存を断ち切り、Fooを外部から注入するようにします。ここではコンストラクタでFooを渡します。
ところで、チョット違う話ですが、FooProxyクラスのFooImpleへの依存を断ち切り、Fooを外部から注入するようにします。ここではコンストラクタでFooを渡します。
public class FooLogger implements Foo { private Foo foo; public FooLogger(Foo foo) { this.foo = foo; } @Override public void foo() { try { System.out.println("foo start"); foo.foo(); } finally { System.out.println("foo end"); } } @Override public void bar() { try { System.out.println("bar start"); foo.foo(); } finally { System.out.println("bar end"); } } @Override public void baz() { try{ System.out.println("baz start"); foo.baz(); } finally { System.out.println("baz end"); } } }