新旧状态的区别

时间:2017-02-10 11:46:18

标签: c++ design-patterns

我正在开发一个SOAP服务器,它应该向客户端发送状态更改。服务器与其他系统通信以更新其内部状态。

我正在寻找一种解决方案(无论是什么模式),让我可以在更新后跟踪状态变化。我看到了memento pattern,但这不是我想要的,因为我不需要以前的状态,但更改。我不能简单地将更改传播到客户端,因为它是一个拉结构(客户端轮询更改)。

用例

假设服务器状态是具有3个元素的list对象,并且更新会修改它添加新元素。客户端必须仅接收新添加的元素,包含4个元素的列表。

任何解决方案?

1 个答案:

答案 0 :(得分:0)

您可以定义一组可序列化的命令(请参阅命令设计模式以获取更多详细信息),每当必须执行更改时生成这些命令。 然后,您可以在本地执行这些命令,以将更改应用于模型,并在队列中序列化这些命令。每当客户端提取它们时,它可以简单地重新应用相同的命令以便其本地模型获得与服务器端相同的结果。
不知何故,您的服务器在应用更改时的行为与客户端完全相同,不同之处在于立即拉动

考虑到您的使用案例,可以将命令定义为列表中的插入,并与所有必需参数一起创建。您可以轻松地将其扩展为删除和更新列表对象。