单例和适配器模式在一起
Singleton and Adapter patterns together
我正在 Java 中为我的 OOP 考试设计一个简单的游戏应用程序。
关键点似乎是数据库。我建模了一个 DBConnector
class,它应该管理与数据库的所有交互。它们是:
- 提供所有可用歌曲的列表(这个游戏有点像 OSU)
- download/upload一首新歌
- 提供每场比赛的排名
我认为 Singleton 模式可能适用于 DBConnector
,因为整个应用程序只需要这个 class 的一个实例。
但这样做严重违反了单一职责原则 (SRP)。事实上,这个 class 可以出于多种原因进行修改,一个用于前面描述的每个函数 [1), 2), 3) ].
我想知道是否在 Singleton class 和其他使用它的 class 之间应用适配器接口(因此使用 Adapter 模式)检索数据可以改善事情。 SRP 违规将继续存在,但至少那些 classes 不会受到 DBConnector
代码中任何更改的影响。
适配器通常用于填补您的代码与其他人的代码之间的差距。当您控制两个接口时,您可能不需要适配器。
话虽如此,您可能高估了此处 SRP 的限制。当数据更改时,您的 DB 层将更改。这只是改变的原因之一。一个数据变化可能会影响多个方法,但这仍然只是一个原因。
所以要回答这个问题,否,我认为适配器不会在这种情况下增加价值。单例 DBConnector
足以通过 OOP 考试。
我正在 Java 中为我的 OOP 考试设计一个简单的游戏应用程序。
关键点似乎是数据库。我建模了一个 DBConnector
class,它应该管理与数据库的所有交互。它们是:
- 提供所有可用歌曲的列表(这个游戏有点像 OSU)
- download/upload一首新歌
- 提供每场比赛的排名
我认为 Singleton 模式可能适用于 DBConnector
,因为整个应用程序只需要这个 class 的一个实例。
但这样做严重违反了单一职责原则 (SRP)。事实上,这个 class 可以出于多种原因进行修改,一个用于前面描述的每个函数 [1), 2), 3) ].
我想知道是否在 Singleton class 和其他使用它的 class 之间应用适配器接口(因此使用 Adapter 模式)检索数据可以改善事情。 SRP 违规将继续存在,但至少那些 classes 不会受到 DBConnector
代码中任何更改的影响。
适配器通常用于填补您的代码与其他人的代码之间的差距。当您控制两个接口时,您可能不需要适配器。
话虽如此,您可能高估了此处 SRP 的限制。当数据更改时,您的 DB 层将更改。这只是改变的原因之一。一个数据变化可能会影响多个方法,但这仍然只是一个原因。
所以要回答这个问题,否,我认为适配器不会在这种情况下增加价值。单例 DBConnector
足以通过 OOP 考试。