假设我有一个名为PermissionManager的类,它应该只存在于我的系统中一次,并且基本上实现了管理应用程序中各种操作的各种权限的功能。现在我在我的应用程序中有一些类需要能够在其方法中检查某个权限。此类的构造函数当前是公开的,即API用户使用。实用单例与依赖注入问题
直到几个星期前,我会简单地过我的课叫下面的伪代码的地方:
PermissionManager.getInstance().isReadPermissionEnabled(this)
但因为我已经注意到这里的每个人恨的单身+这种耦合的,我是想知道更好的解决方案是什么,因为我读过的关于单身人士的论点似乎有意义(不可测试,高度耦合等)。
所以我应该实际上要求API用户在类的构造函数中传递PermissionManager实例吗?即使我只想为我的应用程序存在单个PermissionManager实例?
或者我正在做的这一切都错了,应该有一个非公开的构造函数和一个工厂的地方,在PermissionManager的实例中传递给我?
其他信息需要注意的是,当我说“依赖注入”,我说的是DI Pattern ...我不使用像吉斯或Spring任何DI框架。 (...)
关于通过接口注入的观点非常重要。在测试中模拟PermissionManager对象的能力使得DI成为更多可测试代码的强大方法。 – 2008-10-29 14:53:40