用于业务逻辑和数据库存储的单独数据表示

时间:2012-11-19 11:40:35

标签: java oop model-view-controller

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

问题是,对于数据库存储,我可以以更紧凑和有效的方式描述游戏。例如,我可以为每个独特的手使用整数。这样的表示是紧凑的并且对于DB来说是好的,但是对于其他逻辑实现,我希望有更多的字段描述一个手然后只有一个整数。我不喜欢在一个班级中同时表达不正确的想法。

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

我提出的最佳解决方案就像MVC模式。 Model是我的紧凑型数据库表示,视图是我的业务逻辑表示。但同样,这对我来说似乎不对,因为对于这么简单的任务看起来太复杂了。是否有更优雅的方法或更简单的模式?

2 个答案:

答案 0 :(得分:2)

如果我是使用MVC以'enterprise-y'方式进行的,那么我将为数据库表示和您将实际使用的游戏实体类提供单独的对象,并在两者之间进行转换的独特服务层。这样,数据库映射就更简单了,转换是显式的。

虽然它是游戏,但我可能会将两者合并,并由DB层完成转换。如果您使用的是Hibernate,您可以使用自定义UserType来完成这项艰苦的工作,并将其与模型类分开。

答案 1 :(得分:2)

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