2

我正在为扑克游戏编写一些爱好项目。我的应用程序将在数据库中存储很多游戏。我创建了对象 Game 的表示,它使用了许多其他对象,例如:PlayerHand(基本上是 2 个 Card 对象作为属性,以及一些实用方法,如 isSuited()、isPaired() 等)、Actions(描述玩家进行的赌注)、牌面(描述翻牌、转牌和河牌)等。

问题是对于数据库存储,我可以用更紧凑和更有效的方式来描述游戏。例如,我可以只为每只独特的手使用整数。这样的表示是紧凑的,对 DB 有好处,但对于其他逻辑实现,我希望有更多的字段来描述一只手,而不是一个整数。我不喜欢将两种表示都放在一个类中的想法,这看起来不正确。

问题:我的问题可以使用什么方法?

我想出的最好的解决方案是类似于 MVC 模式。其中 Model 是我的紧凑型数据库表示,view 是我的业务逻辑表示。但同样,这对我来说似乎不正确,因为对于这样一个简单的任务来说看起来太复杂了。是否有更优雅的方法或更简单的模式?

4

2 回答 2

2

如果我使用 MVC 以“企业级”的方式进行操作,我将为 DB 表示和您将实际使用的游戏实体类提供单独的对象,以及在两者之间进行转换的不同服务层。这样,数据库映射更简单,转换也很明确。

由于它是一个游戏,虽然我可能会将两者结合起来并由数据库层完成转换。如果您使用的是 Hibernate,则可以使用 customUserType来完成这项艰苦的工作,并将其与您的模型类分开。

于 2012-11-19T11:49:29.380 回答
2

MVC 是针对整个应用程序,将流控制、表示、业务逻辑分开。您需要的是 Data Mapper,因此您可以拥有对数据库一无所知的域对象。对于大多数应用程序,我通常同时使用 MVC 和 Data Mapper。

于 2012-11-19T11:49:48.913 回答