Java 三层建筑风格是如何工作的?一些简单的例子

Java 三层建筑风格是如何工作的?一些简单的例子,java,architecture,software-design,three-tier,Java,Architecture,Software Design,Three Tier,我已经获得了一个Java应用程序,可以在其上应用三层体系结构风格;要执行的一个用例是登录。 我已经研究了所有适用于这种架构风格的理论和规则,但我需要理解不同层次之间的对象合作逻辑,以及模式如何在每个层次上协同工作以实现这个(和其他)用例 首先,我创建了三个基本包:演示、应用程序和数据。此外,我还包含了一个关于边界类的包,这些类是发送请求的各种GUI 在表示层中,我只放置了一个前端控制器,它封装了使用应用程序的客户端所需的表示逻辑 在数据层中,我放置了DatabaseConnection类(与数据

我已经获得了一个Java应用程序,可以在其上应用三层体系结构风格;要执行的一个用例是登录。 我已经研究了所有适用于这种架构风格的理论和规则,但我需要理解不同层次之间的对象合作逻辑,以及模式如何在每个层次上协同工作以实现这个(和其他)用例

首先,我创建了三个基本包:演示应用程序数据。此外,我还包含了一个关于边界类的包,这些类是发送请求的各种GUI

在表示层中,我只放置了一个前端控制器,它封装了使用应用程序的客户端所需的表示逻辑

在数据层中,我放置了DatabaseConnection类(与数据库通信的类,负责加载驱动程序、连接到数据库、查询等)和DAOs类(与数据库接口的数据访问对象)

真正的问题是,我不知道在应用程序级别应该放什么,它代表应用程序的主要部分,定义应用程序的域模型,即:它们的实体、它们的关系和应用程序逻辑。它不应包含任何关于如何向用户显示数据或如何保存数据的参考

因此,我目前有以下层次结构:

主-->边界演示应用程序数据数据库

根据这种架构,我如何进行简单的登录? 铭记每个层面只能与底层沟通; 例如,边界层中的类不能与数据层中的类直接通信,边界层的类只能与表示层的类通信。
如有必要,您可以发布一个伪代码,以了解要执行的步骤。

您的边界只调用表示层上的基本方法

假设用户单击按钮创建用户,流程如下:Boundary调用FrontController(Presentation层)上的方法
createUser(字符串名称,int-age)
。控制器可以检查一些基本的(与UI相关的)内容,然后在应用程序层上调用类似的方法

应用程序层现在可以处理一些进一步的检查(例如:是否允许当前活动用户创建用户?)。应用程序层获取给定的信息en(姓名和年龄),基于该信息创建DAO,并调用该方法在数据层(DAO)上创建用户


数据层仅插入给定的信息。

您的评论很有帮助,但我希望更严格一些。所以,用同样的逻辑,我想做一个登录。我有login类的边界,叫做B_login,有两个textarea和一个按钮。当我按下按钮时,我向FrontController发送一个请求,该控制器加载驱动程序,设置连接并调用方法dispatch(String request,Arraylist params);那么?应用层和数据层之间发生了什么?例如,如果在应用层中有业务对象、传输对象或应用程序服务,如何保持登录?不应在FrontController中设置连接。此类信息过于具体,属于应用程序层甚至数据层。Applicationlayer应该检查给定的值(用户名和密码)是否有效(例如,此处可能已经拒绝了空字符串,甚至没有真正尝试登录)。非常感谢这些提示,我将尝试准确地遵循它们。对我来说,Boundary和FrontController都是演示的一部分,因此,在边界中使用Applicationlayer的一部分(或者,类似于两者之间的部分)是可以的。可以在边界中执行空检查,但没有更具体的操作。例如,如果是注册:边界检查键入的电子邮件是否可能是电子邮件,应用程序层检查该电子邮件是否已注册