【发布时间】:2016-03-04 11:21:27
【问题描述】:
我正在用 C++ 和 Qt 设计一个应用程序。 我在 Object 类中有经常需要 数据,在 ObjectExtended 类中有很少需要 数据。 每个 Object 都与 ObjectExtended 相关联。
例子:
Class Object
{
string importantData; //we need that very often
int id;
}
Class ObjectExtended
{
date dateCreated; //meta info, we need this rarely
int assosiatedObjectId; //to know to which Object this extended data relates
}
我有 list<Object> 和 list<ObjectExtended> 的对象列表
我想要的是将列表保存在 RAM(内存)中并将列表保存在 ROM(本地存储,例如 SQL)中。 需要节省内存。我已经在 SQL 中保存数据以保存应用程序状态和数据。
我可能面临的问题是我的数据可能会发生变化,如果我将 Object 和 ObjectExtended 的数据分开,我将不得不重写大量代码。
是否有一些最适合我的问题的设计模式?
【问题讨论】:
-
当您说“我的数据可以更改”时,您的意思是它可以在运行时更改,或者您的意思是数据架构更改(设计时)?
-
你的意思是“ROM”,如只读存储器?或者您是否希望将 ObjectExtended 保存在持久性存储中,例如数据库或文件系统?
-
我的意思是我可以将一些成员从 ObjectExtended 移动到 Object ,反之亦然,不是在运行时,而是在代码(更改应用程序的架构,例如,我将在 Object 中添加需要来自 ObjectExtended 的新数据的方法,并且我必须将数据从一个类移动到另一个类)。 “ROM”是指持久存储
-
所以不是ROM,请更新问题
-
我尝试了非常简单的
getSingleValueFromSql(valueId, objectId)与 set 函数相同。所以我们可以实现低内存使用和访问很少使用的数据。
标签: c++ sql qt design-patterns memory