【发布时间】:2009-08-15 10:19:13
【问题描述】:
当 .NET 2.0 出现时,我对当时推出的几个服务所使用的 Provider Factory 模式印象深刻......并开始在任何地方使用它。
但后来我遇到了真正的麻烦:
- 在 CE 上,没有配置系统,因此无法轻松将其移植到该环境(因此会导致代码中出现严重的分叉,否则本可以在两个框架上很好地工作,只需进行几次修改)李>
- 对于如何确保静态管理器都包装了提供程序的所有方法,我从来没有找到一个好的答案:providerBase 可以实现接口,但接口 (AFAIK) 不能用于静态方法。因此,封装的提供者和静态管理器之间总是存在分歧的机会。
- 样板代码的数量激增,我的工作效率反而下降了。我的意思是,不仅仅是调用 instance.Method();
我正在调用它,但通过一个静态 Manager.DoWork(),它正在调用其实例的 DoWork(),它通常最终成为 ProviderBase 类中的公共代码,它检查 args,做了一些工作,最后调用了一个抽象的 InternalDoWork(),在 CustomProvider 类中实现了...
换句话说...调用方法的一种非常曲折的方式(3 到 4 个方法,到处检查参数,在哪里尝试/捕获/登录 - 在 Manager 或 ProviderBase 中不清楚?-等等。
所以,我的问题是:我可以查看另一种模式来提供配置文件配置功能,从而允许动态更改服务提供者 - 好吧,至少在重新启动时?
PS:我最近听说了很多关于 IoC/DOI 可能更快的解决方案......虽然没有在生产中使用它。看起来很有趣……但我的第一印象是DOI似乎有服务的交换,在配置文件中可配置,但不是配置文件中的参数设置?
谢谢!
【问题讨论】:
-
感谢您使用真实世界的示例指出为什么 [在此处插入最喜欢的设计模式] 并不总是灵丹妙药。
标签: c# design-patterns