2009-05-19 167 views
3

我正在使用不同程序集的项目(想象一个打印机模块,一个成像模块等)。在这个项目中,所有的接口都是在一个Interfaces-assembly中声明的(想象一下Interfaces.dll与接口IPrinterModule,IImagingModule等)。在哪里声明接口?

因为我是牛仔编码员;)我必须问SO社区,如果这真的是最好的实践或如何以更好的方式完成这项工作?

回答

4

我们都采用了类似的方法组装声明。你当然希望将接口与其当前的实现分开,因此未来可以很容易地提供不同的实现。 Martin Fowler将其描述为Separated Interfaces模式。

如果接口彼此依赖(IPrinter是否返回IImageXXX?),那么您确实需要它们在同一个程序集中以避免循环构建依赖关系。

+0

与IPrinter返回对象非常好的一点。也是链接。 谢谢! – Inno 2009-05-19 14:43:40

6

对我来说这听起来不错 - 有一个单独的接口程序集是很常见的,特别是对于大量插件的系统。

您很可能正在使用这些接口在正交组件之间创建松散耦合的桥接(顺便说一下,对您有好处)。以真正模块化的方式完成此操作的唯一方法是为这些接口分别安装一个程序集,以便实现接口或引用它的每个类型实际上都使用相同的接口类型。真的,你唯一的选择是将整个系统中的所有东西编译成一个程序集。

1

如果有循环引用,那么将所有接口保存在单独的程序集中将会对您有所帮助。在研究工作流程的过程中,我已经阅读了许多代码示例(来自微软,代码项目和其他站点),接口在实现它的程序集中声明。

像IPrinterModule将在实现

+0

有可能是在另一个DLL中实现它的类...就像插件一样。 – CSharpAtl 2009-05-19 13:50:10