假设我有一个名为 PermissionManager 的类,它在我的系统中应该只存在一次,并且基本上实现了为我的应用程序中的各种操作管理各种权限的功能。现在我的应用程序中有一些类需要能够在其方法之一中检查某个权限。此类的构造函数目前是公开的,即由 API 用户使用。
直到几周前,我才会让我的班级在某处调用以下伪代码:
PermissionManager.getInstance().isReadPermissionEnabled(this)
但是由于我注意到这里的每个人都讨厌单例+这种耦合,所以我想知道更好的解决方案是什么,因为我读到的反对单例的论点似乎是有道理的(不可测试,高耦合等)。
那么我真的应该要求 API 用户在类的构造函数中传入一个 PermissionManager 实例吗?即使我只希望我的应用程序存在一个 PermissionManager 实例?
还是我要解决这一切都错了,应该有一个非公共构造函数和一个工厂在某个地方为我传递 PermissionManager 的实例?
附加信息请注意,当我说“依赖注入”时,我指的是 DI模式……我没有使用任何 DI 框架,例如 Guice 或 Spring。(...然而)