【发布时间】:2012-09-20 19:52:58
【问题描述】:
在我正在开发的一个应用程序中,我们有在将新实体添加到存储库时触发的操作。其中一项新操作应该是使用服务(如服务层,而不是以太网中的某处的 Web 服务)在对象进入时执行一些业务规则操作。
这一切都很好,但应该使用的确切服务将根据我们正在操作的实体的属性(基本上,基于实体与哪个客户相关)而有所不同。我想让动作与它可能需要调用的服务风格保持松散耦合。
我正在考虑做的是实现一个接受实体并返回正确服务的工厂。不过,这似乎有点笨拙。有没有更好的设置方法?
我曾考虑在运行时使用 IoC 容器来确定正确的实现,但快速浏览一对(Ninject 和 Windsor)似乎并不表明它们非常适合这种操作。
【问题讨论】:
-
Factory方法对于这样的事情几乎是正确的设计。为什么你觉得它“有点笨拙”? -
我不确定。我想我只是不喜欢在某处分发服务的巨大 switch 语句的想法。似乎应该有一个更优雅的方式。所以,我想我会检查一下是否有其他人知道。 :)
-
好吧,如果这就是类/方法所做的全部,那么显然这就是它的工作......总比试图“聪明”地了解它要好。
标签: c# architecture inversion-of-control loose-coupling