システムに一度だけ存在し、基本的にアプリケーションのさまざまなアクションのさまざまな権限を管理する機能を果たす PermissionManager というクラスがあるとします。現在、アプリケーションにクラスがあり、そのメソッドの 1 つで特定の権限をチェックできるようにする必要があります。このクラスのコンストラクターは現在パブリックです。つまり、API ユーザーによって使用されます。
数週間前までは、クラスに次の疑似コードをどこかで呼び出させるだけでした。
PermissionManager.getInstance().isReadPermissionEnabled(this)
しかし、ここにいる全員がシングルトンとこの種の結合を嫌っていることに気付いたので、私が読んだシングルトンに対する議論は理にかなっているように見えるので(テストできない、結合が高いなど)、より良い解決策は何かと思っていました。
では、API ユーザーがクラスのコンストラクターで PermissionManager インスタンスを渡すことを実際に要求する必要があるのでしょうか? アプリケーションに PermissionManager インスタンスを 1 つだけ存在させたいのですが?
それとも、私はこれについてすべて間違っていて、非公開のコンストラクターと、PermissionManager のインスタンスを渡すファクトリーをどこかに持つ必要がありますか?
追加情報「依存性注入」と言うとき、DIパターンについて話していることに注意してください... Guice や Spring などの DI フレームワークは使用していません。(...まだ)