私は単純なツリー構造のデータベースを開発しており、通常はビルダー (ビルダー パターン) を介して依存関係またはオプション設定を設定しています。たとえば、いつ Guice を使用するか、いつ Builder パターンを使用するか、いつコンストラクター自体の代わりに静的ファクトリ メソッドを使用するかがわかりません。私はEffective Javaを何度か読みましたが、コンストラクターを公開しないことの少なくとも多くの利点について言及していると思います。読み直す時が来ました;-)
では、明確に区別できるケースを知っていますか? そして、コンストラクターを公開するべきではありませんか? したがって、たとえば、すべての場合にpublic static Foo getInstance(...) { return new Foo(...)}
?を書きます。