我正在用一些人开发一些软件,并且从完成的类图中有一个Database
类,例如Order
类有两个构造函数,一个没有参数,另一个没有参数id
。它还有一个save()
方法,所以我假设如果你在构造函数中提供id
,我会假设这个类将使用Database
类并填充对象属性并在那里没有地方可以在构造函数或setter方法中注入此Database
类,所以我认为他们想要使用Singleton
。
我想知道我的论点是否有效,然后才告诉他们,所以这里是:
Database
类它们是否是有效的论据,是否有更多的缺陷这样做?如果我的观点有效,那么值得对他们说吗?
感谢。
答案 0 :(得分:1)
这是一个众所周知的模式active record。它通常用在几个大型框架中,例如Ruby on Rails。它确实有你提到的缺点,我认为你应该强调潜在的问题,但不是没有任何替代讨论。
一种常见的替代方法是使用服务外观来保存对象 - 一组DAO。使用此模式,您可以更明确地访问数据库并且不太方便,但IMO可以减少主应用程序中的数据库耦合。正如你所提到的,这在SRP方面更好,其中包括使测试更容易。