gpt4 book ai didi

java - 通过一个Database类访问数据库,紧耦合?破坏建议零售价?

转载 作者:太空宇宙 更新时间:2023-11-04 11:57:45 25 4
gpt4 key购买 nike

我正在和几个人一起开发一些软件,从完整的类图中有一个 Database 类,例如 Order 类有两个构造函数,一个有没有参数,只有 id 除外。它也有一个 save() 方法,所以我假设如果你在构造函数中提供一个 id 类将使用 Database 类并填充对象属性,也没有地方可以在构造函数或 setter 方法中注入(inject)此 Database 类,所以我认为他们想使用 Singleton .

在我对他们说之前,我想知道我的论点是否有效,所以他们在这里:

  • 这样做违反了 SOLID 单一职责原则 (SRP)
  • 它在我们所有需要 Database 类的类之间引入了紧密耦合
  • 它隐藏了我们的对象依赖关系
  • 它使单元测试变得更加困难
  • 引入不必要的全局状态

它们是否是有效的论据,这样做是否还有更多缺陷?如果我的观点是有效的,值得对他们说吗?

谢谢。

最佳答案

这是一个著名的模式,称为 active record .它通常用于几个大型框架,例如 Ruby on Rails。它确实有你提到的缺点,我认为你应该强调潜在的问题,但并非没有任何替代方案可供讨论。

一个常见的替代方案是拥有一个服务外观来保存您的对象——一组 DAO。使用这种模式,您可以更明确、更不方便地访问数据库,但在我看来,您可以减少主应用程序中的数据库耦合。正如您提到的,从 SRP 的角度来看,这更好,这使得测试更容易。

关于java - 通过一个Database类访问数据库,紧耦合?破坏建议零售价?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15448441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com