我有一个由几个模块组成的游戏。
其中之一是数据库模块。我想让它变成这样:
Database{
public:
save(&Object); //all my classes in the all modules inherit from Object
load(&Object);
};
使该模块独立于其他模块Database
的最佳方法是什么(其他模块将在使用save
和功能中存储数据load
)?
我考虑了几个解决方案:
- 所有对象都有类似
serialize()
从类继承的方法Object
(类似于Java)。Database
使用该方法获取字符串并保存。明显的缺点是:所有对象都必须实现新方法,并且保存字符串不是最佳选择(不知道类的结构)。 - 为所有类制作“清单”(例如,在将发送到的文本文件中
Database
)。该清单将描述类的结构是什么(例如,一个字符串、两个双精度、一个罕见使用的 int)。缺点是灵活性——更改其他模块中的类将对清单产生影响。 - 所有类都有自己的
save
和load
方法并Database
使用它们。我不想要它,因为所有类都必须知道数据库类型,save
并且load
应该在Database
类中,而不是分布在整个代码中(这是制作这样一个模块的要点)。 Database
了解所有其他模块(并将知道如何保存所有对象)。这里的坏事是很多依赖。任何模块的更改都会影响Database
.
哪种方式会好?或者也许有更好的选择?