软件设计——三层架构

本文关键字:三层 软件 | 更新日期: 2023-09-27 17:54:41

第三层-接口

第二层-业务逻辑(从用户获取输入,检查是否有效,发送到数据库功能)

第1层-数据库(创建,更新,获取记录等)


用户可以添加多个联系人电话号码,如果是添加的第一个电话号码,系统将自动将该电话号码设置为主电话号码,此后用户可以自行更改主电话号码。

当在数据库中创建第一个电话号码记录时,哪一层负责检查电话号码是否需要设置为primary ?

软件设计——三层架构

业务层。数据库应该存储数据,而不是做出决策。界面只与用户交互。业务层制定规则。

当电话号码被添加给用户时,您的业务逻辑应该处理它。您可以通过为它提供单元/集成测试来验证它的工作。

我想这取决于你的目标是什么。因为它是你的业务层应该处理电话被验证/设置为主。我认为数据库仍然需要以某种方式存储这些信息。

然而,在某些情况下,如安全验证,你需要在接口,逻辑和数据库级别做一些检查。是的,这是多余的,但我认为你会想要保证黑客破坏你的接口或逻辑,不能到处乱弄你的底层数据。

n层应用程序中的数据层除了输入值和获取值之外,实际上不应该做任何事情。可以把它看作一个持久服务。

除了UI代码之外,其他所有东西都进入了所谓的业务和/或逻辑层(你应该按照MVP, MVC或MVVM等东西将这些东西分开)。

虽然这个简单的问题实际上引起了事务的问题,但是您的数据模型最终应该防止这种情况,但是如果您不能作为一个原子单元完成操作,那么总是有可能同时放置两个电话号码,并且它们最终都是主号码(取决于应用程序和数据库之间的延迟)。要优雅地处理这些情况,您至少需要考虑以有意义的方式传播这些问题的错误恢复(错误处理)。

除了上面的答案之外,您可能还需要考虑持久化输入,而不管输入是否有效。可以添加更多的开发(特别是如果您需要清理数据),但这可能是值得的,这取决于您的应用程序