Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 三层体系结构正确性_Java_Architecture_3 Tier - Fatal编程技术网

Java 三层体系结构正确性

Java 三层体系结构正确性,java,architecture,3-tier,Java,Architecture,3 Tier,我有一个在(有缺陷的)三层体系结构中实施的项目。我的工作是使它更通用,这样就可以很容易地将新数据库添加到项目中 具体:SQL数据库有一个databaseFacade,我必须使它更通用,这样我们就可以很容易地添加多个数据库。在本例中,将其写入CSV文件 我在数据库层的想法是创建一个定义所有方法的接口。然后让数据库facade(取决于您想要使用的)实现这个接口,以便它变得更通用。 然后我有一些DBmanager类。这个DBmanager类将读取一个配置文件,以便他知道要使用哪个数据库。基于此信息,他

我有一个在(有缺陷的)三层体系结构中实施的项目。我的工作是使它更通用,这样就可以很容易地将新数据库添加到项目中

具体:SQL数据库有一个databaseFacade,我必须使它更通用,这样我们就可以很容易地添加多个数据库。在本例中,将其写入CSV文件

我在数据库层的想法是创建一个定义所有方法的接口。然后让数据库facade(取决于您想要使用的)实现这个接口,以便它变得更通用。 然后我有一些DBmanager类。这个DBmanager类将读取一个配置文件,以便他知道要使用哪个数据库。基于此信息,他将创建接口实例并将其返回到应用层

然而,这就是我不知道我是否正确的地方。应用层现在有一个DBmanager类(在这个类中,所有内容都被正确封装,只有一个方法是公共的,用于返回facade),然后是DBfacade


你认为这是正确的吗?因为我有疑问。

对我来说,这似乎是合法的。我还不是软件体系结构方面的专家,但您的描述描述了与JDBC设计方式类似的概念。

我看到PHP系统()几乎完全使用了这种模式,并且运行良好。所发生的一切是,DB类型被指定为一个配置变量,具体的DB访问类被实例化为全局DB管理器对象,提供了facade方法,例如get_records(),它返回一个标准化的行对象数组。您是否将此称为facade或adapter仍有争议,但这并不令人担心


我要说的是,按照你目前的计划去做。您似乎已经正确地解耦了层,并且理解了模式的用途。同样,你的低级(DB)和高级别(应用程序控制器)组件都依赖于中间的一个DB外观界面,这是一个很好的例子,因此,奖励点!p> 这是正确的方法。一个小问题是,您的DBManager实际上遵循该模式,因此应该称为DatabaseFacadeFactory,假设您的facade类称为DatabaseFacade

当您越来越熟悉Java时,请查看。它提供了许多工具和技术,可以自动处理此类情况,并且不需要很多样板代码。有关详细信息,请参阅