是否有一个模式的名称可以根据模型更改保持远程UI元素的同步?

时间:2018-06-01 01:50:20

标签: design-patterns

我想研究特定软件模式的现有解决方案,我认为在当今断开连接的软件世界中,这种解决方案必须非常普遍。我没有运气在网上搜索描述它的方法,我想知道是否有一种描述我不知道的模式的方法。

我正在寻找的设计如下所示:

我正在尝试设计一个(面向对象的)应用程序,其中需要尽快重绘大量远程连接的控件(UI元素)。我还没有特定的语言或目标,但为了论证,我们假设每个控件都是在网页的Canvas元素上绘制的。对于此控件的任何特定实例,外观基于可能具有几十万个属性的相当复杂的数据对象(模型)。

由于可能存在的控件数量以及数据对象的复杂性,我将通过线路发送补丁来同步数据对象的每个远程副本(而不是每次都发送整个数据对象)时间)。然后我想使用相同的补丁/转换数据来仅重新绘制需要重新绘制的控件部分。

对于修补机制,我想象使用的东西类似于对象的操作转换(而不是纯文本)。然后,我将在绘画系统中使用相同的补丁信息来确定控件的哪些部分需要在任何更新时重新绘制。

我想这是一个非常常见的场景,我不想完全重新构建这里的轮子(虽然我知道绘制机制将取决于具体的绘图算法)。

我可以在线搜索这种远程对象同步和绘画机制的艺术术语吗?这是一种公认​​的模式吗?

3 个答案:

答案 0 :(得分:0)

据我了解,您正在寻找Observer设计模式。 Observer模式主要用于许多图形用户界面工具箱中,以将用户界面的表示方面与底层应用程序数据分开。电子表格对象和条形图对象都可以使用不同的演示文稿描述同一应用程序数据对象中的信息。

当主体和观察者之间的依赖关系特别复杂时,可能需要维护这些关系的对象。我们称这样的对象为ChangeManager

答案 1 :(得分:0)

我认为这或多或少是React的作用(除了拥有几十万个属性的荒谬之外)。

它为您提供服务器端呈现,您可以继续在客户端使用它。它使用来自州的信息提供部分更新。您可以使用GraphQL(部分)检索该状态并在本地更新。

这需要大量的配置和粘合才能使这项工作成功,但所有基础原语或多或少都已到位。

答案 2 :(得分:0)

也许基于Observer设计模式和Composite设计模式的解决方案可能能够解决您的问题。