>>425
馬鹿にも分かるように説明してやるよ。

public class Foo { public void foo() { Bar o1 = new Bar(); } }

public class Foo { public void foo() { Bar o2 = Bar.getSingleton(); } }

クラスFooから見た場合、o1とo2の本質的な違いはないだろう。
どちらも自動変数で、Fooが参照を保持するわけではない。
そもそも、SingletonはBarのみが参照を保持することが前提だから、
Bar内でインスタンスの解放タイミングだけを気をつければ、
後はどのクラスも参照の有無を気にしなくてもいい。
参照の管理をクラス内に限定できるというメリットがあるわけだ。

おまえはFooのなかでBarを使うな、つまりクラスライブラリを
使うなといってるのと同じ。