用于在服务器应用程序中的地图中存储客户端信息的设计模式建议

时间:2015-07-27 11:55:47

标签: c++ design-patterns telecommunication

我的应用程序是服务器,我的客户端会给出一些处理请求。 客户将多次联系我(服务器)以处理相同的请求。

map<clientId,ClientInformation>

通常,我会在STL Map中存储我从客户端收到的一些信息,以便下次处理客户请求。

一旦客户对我的服务感到满意,我将清除地图中相应客户ID的条目。

这是我的样本ClientInformation类:

class ClientInformation
{
int NotRequiredForNextTime;  // Information Not required for  processing the client request next time
int requiredforNextTime;  // Information required for  processing the client request next time
int requiredforNextTime;  // Information required for  processing the client request next time
int NotRequiredForNextTime;  // Information Not required for  processing the client request next time
int NotRequiredForNextTime;  // Information Not required for  processing the client request next time

UserDefinedClass Class1;
};

Class UserDefinedClass
{
int requiredforNextTime;
int NotRequiredForNextTime;
}

在上面的课程中,我只需要requiredforNextTime存储在地图中。只有在处理当前请求时才需要其他信息。

ClientInformation类可以将用户定义的类作为成员(UserDefinedClass),下次不需要某些UserDefinedClass成员。

是否有任何设计模式,为此问题提供了优化解决方案(内存使用)?

1 个答案:

答案 0 :(得分:1)

在这种情况下,只需将Not-与NotRequired-字段分开,在单独的类中。你可以......

  • 将NotRequired-类保存在Required类中的指针中,这样您就可以delete,或者

  • 在NotRequired-类中使用指针保持Required-类,以便您可以将其移出到某个不同的容器,或

  • 从一开始就将它们放在不同的容器中,或

  • 编写一些代码来构造ClientInformation类中的Required类 - 复制必填字段(复制效率很低,但如果有的话,可能需要对现有代码进行较少的更改)。

    • &#34;序列&#34;这是一种形式,尽管数据不一定在存储期间保存在可访问的结构中,并且需要不同的反序列化步骤来重新创建Required类,或者可能只重新填充另一个ClientInformation对象的Required字段< / LI>

(我不知道任何相关的设计模式名称,但不是你所做的一切,因为程序员需要通过设计模式名称进行验证 - 培养你对数据建模选项的心理意识意味着你可以应用&# 34;常识&#34;,命名或匿名。)