>>670
設計上の万人向け指針はないが、DefaultHoge を公開する必要がないなら (1)、
利用側でサブクラス化のための簡易実装版として使えるよう公開するなら (2) かな。
(1) なら Hoge の public static final DEFAULT に直接定義すれば良い。Hoges は不用。
(2) でも Hoge の public static final DEFAULT に直接定義すれば良いような気がする。
まぁそこは好きなように。

もちろん実行時に動的に実装を切り替える必要が将来的に発生しそうなら
定数じゃなくて getInstance() とかにしといた方が良い。定数的意味合いの強い
不変オブジェクトならそんな要件は無いと思うが。