2011-03-10 69 views
1

我正试图将非常松散的耦合设计放在一起。松散耦合设计中的常见定义

但我不能决定如何处理常见的定义。

现在我通过将它作为外部DLL添加它分开担忧。通过注入和接口,我的域可以在不知道实现的情况下使用我的业务逻辑。

我遇到的问题是,所有我的组件都要松散耦合,他们需要实现相同的接口。我的解决方案是一个单独的项目(dll),只有所有的定义。 这开始的很好,但似乎变得膨胀并将所有代码链接在一个dll依赖项上。

什么是最实用的方法?

谢谢!

回答

0

编辑

对不起,我想我最初误解了你的问题。所以你有一个包含你的接口的程序集,而你在其他程序集中使用DI来创建你的依赖对象。我倾向于在我的应用程序中创建一个核心程序集,其中包含应用程序的主要行为(智能实体,枚举和接口)。这个程序集很少依赖于应用程序的其余部分,但依赖程度很大。以此项目为例 - whocanhelpme.codeplex.com。你可以称这个核心臃肿,但根据定义,它需要非常丰富。


你可能会发现,您的许多抽象的单位都遵循常见的设计模式。下面是给每个人一个很好的说明一个网站 - 你可以从这些(观察,工厂,适配器等)得出名字:

http://www.dofactory.com/Patterns/Patterns.aspx

+0

我正在使用最接近工厂方法。但通过松散地耦合我的图层(GUI,Business,Service,Data),他们都需要知道具体对象可以传递的共享定义(接口,枚举,..)。所以他们都需要知道使用具体实例的接口,这会创建一个交集和依赖定义。如果我尝试将它们提取到单独的dll,并且我将进入我的UserManagement逻辑,我还将加载我的DAO对象fe的定义。 (很像需要建筑物的蓝图,当你想打开一扇门时) – Tim 2011-03-10 12:06:40

+0

对不起,我想我最初误解了你的问题。所以你有一个包含你的接口的程序集,而你在其他程序集中使用DI来创建你的依赖对象。我倾向于在我的应用程序中创建一个核心程序集,其中包含应用程序的主要行为(智能实体,枚举和接口)。这个程序集很少依赖于应用程序的其余部分,但依赖程度很大。看看这个项目为例 - http://whocanhelpme.codeplex.com/。你可以称这个核心**膨胀**,但根据定义,它需要非常丰富。 – 2011-03-10 13:02:40

+0

谢谢!我正在检查它并试图获得您的架构的概述。我会再读一点,并尝试重新安排我的项目,以结合“核心”功能,而不是试图使我的接口/枚举“可导出”。 – Tim 2011-03-10 13:26:44

0

我会说,该层只应了解下一层及其接口,因此可以将接口与其实现一起放置,然后在链中的层(程序集)之间添加引用。

您可以使用引导程序模式配置DI并通过定位器进行解析。关于日志记录,缓存等横切关注问题,应该为每个图层引用单独的程序集。在这里,您还可以使用合同,并且在未来可能会将这些横切功能替换为实施相同合同的另一个装配。

希望这有助于至少一点:)