我应该在哪里定义我的接口以获得良好的架构?

时间:2014-02-20 22:59:16

标签: architecture interface

我有两个项目,比如App和Data。数据有一些方法,App项目使用它,以便App项目不必担心任何数据访问/数据库连接等。我想这个设置的好处是1.数据没有依赖性在App和2.如果数据库已更改,例如从MS SQL更改为Oracle,您根本不需要更改App项目 - 只需开发一个新的Data项目。

似乎应该为App项目用于数据访问的所有方法定义一个接口。这样,有人可以在不关心数据项目的情况下开发App项目,并且可以将差异数据项目插入到App项目中,只要它实现了界面,一切都会正常工作。

为什么问题是:界面应该在哪里?如果它存在于App中,那么Data现在依赖于App。但如果它存在于Data中,则必须将其复制到可能希望插入的任何新Data项目中。

我将再举一个例子:假设App是一个在线销售工具。您可能需要同一App项目的2个实例,一个用于eBay,一个用于Amazon。 eBay实例将有一个与eBay一起做事的数据项目,而亚马逊实例将有一个不同的数据项目。如何构建应用程序,以便可以将相同的App组件部署到两个实例?接口是否正确使用?

2 个答案:

答案 0 :(得分:0)

是的,接口是正确的使用方法,你通常会将它们放在单独的文件中 - 通常是每个接口都在自己的文件中 - 然后简单地引用接口所在的文件(或模块或程序集,取决于平台)在实现支持所述接口的新对象时声明。

此方案允许分离关注点,更容易进行单元测试,模拟等等。

答案 1 :(得分:0)

如果要保持依赖关系是孤立的,最简单的方法是在不同的AppDataInterface项目中对接口进行编码,App和Data都可以依赖该项目。