>>677
>呼び出し側が規定値を知ってる事が実装を公開している事にはならないだろう。

実装を隠蔽することによって利点が得られるので、それで(1)を採用すべきだ、
という理由にはならないということ。
実装を隠蔽したとしても、そのシングルトンの説明(javadoc)に、
「このメソッドはこのような値を返すようになっています」一覧を作らないとたぶん困る。

隠蔽することによって、将来的に互換性を保ったまま何かしらの修正をする余地があるなら、
隠蔽することに価値があるんだけど、
(後だしで悪いんだけど)そのような複雑なクラスは含んでいないので(intを返すとか、InetAddressを返すとか)、
そのようなことは結構考えられないことになってることにして下さい。

>「規定値」そのものに意味がないならその具体値を示さなければ良いだけの話。

ちょっと良く分からない。とりあえず、
インタフェースHogeは、ユーザが設定できるものを抽出したものと考えてください。

>(2) に関してはサブクラス化させたくないなら final 宣言しておけば良い。文法的に

これは、
サブクラス化が便利だから(2)を採用すべきだ、
ということは理由にならないということ。