1

当我从 MVC 转向使用 Prism 做一些 WPF 时,我买了一本 Prism 书,我再次震惊地看到仍然是已知的反模式的服务定位器。我已经阅读了 .NET 中的依赖注入等书籍,Mark Seemann 彻底了解了为什么服务定位器是一种反模式。

我只是想帮助成为最佳模式和实践的传播者,并且想知道谁没有得到这些模式中的一些实际上是坏的备忘录。

4

2 回答 2

3

科学与艺术之间当然存在平衡。发现模式不是故意发明的。一些语言使它们自己受制于更多的软件工程原则。这当然有很大的讨论空间。我认为您质疑某些东西的使用是正确的,但我不确定您是否会找到答案,因为您提到的另一个问题表明“非常”知名人士似乎彼此不同意。

我需要对需要的事项以及使用它的上下文进行更多说明。总的来说,我认为应该分析这些“反模式”的使用。我读过的 Singleton 很糟糕,但我们都知道它是有目的的。

于 2012-09-14T05:36:06.797 回答
0

首先要澄清事实:Prism 不鼓励使用 ServiceLocator。这使得这个问题没有实际意义。也许您想将问题重命名为“为什么棱镜书鼓励......”这可能是真的,也可能不是,因为我没有读过它。

Prism 建立在 Unity IoC 之上,Unity IoC 是 Microsoft 的 IoC 容器实现。如果你用它注册你的类型,它会正确地构建它们。互联网上有很多文章展示了如何做到这一点。

现在,肥皂盒部分:

我认为没有最佳实践之类的东西,因为任何“最佳实践”在某些情况下都没有意义。例如,当我看到一个单身人士时,它总是会响起警报,但在某些情况下拥有它是可以的。即使是“goto”有时也是合理的(哦,我的上帝!他刚刚说了什么?!?!)

现在,我对 Prism 了解不多,但是 IMO,服务定位器非常有意义,特别是如果它在框架内使用,因为它可以让开发人员有更多的设计和实现选择,这应该是开发人员的电话.

要真正了解这是否是一个错误的决定(而且很可能是),看看使用 Prism 的开发人员由于涉嫌使用 ServiceLocator 而不能做的事情会很有趣,否则如果 Prism 使用 DI,这将是可能的。

于 2012-09-14T07:48:13.090 回答