为了解耦代码,你可以使用服务定位器,但这不是全局变量/状态吗?
我知道这些通常使用接口运行,因此你传入一个接口并获取一个具体类,但我的问题仍然存在。
例如:
我知道这些通常使用接口运行,因此你传入一个接口并获取一个具体类,但我的问题仍然存在。
例如:
class Something {
void DoSomething() {
IMyType myType = ServiceLocator.GetSerivceTypeOf(IMyType);
}
}
这里的类需要MyType,但是不是通过构造函数等方式将MyType传递下来,而是以这种方式获取。
我在作为开发人员的职业生涯早期就提出了这个问题 - 在那之前,我还没有遇到过这种模式。安东尼已经表达了我的观点(因此现在被选为答案),即服务定位器是反模式,就像其他人一样。提供的链接是一个很好的起点 - 但是为了回答自己的问题,经过这么长时间,它们作为全局状态应该被避免。更喜欢标准的依赖注入 ;)