【发布时间】:2014-05-03 22:57:21
【问题描述】:
我目前在工作场所就遗留 Java Swing 应用程序和 d3.js 图的最终输出之间的接口设计进行辩论。当前的应用程序是一个桌面统计探索工具,它使用 Java2d 解析数据并输出图形。该应用程序正在转换为带有 Web 前端的服务器/客户端应用程序。
目前,图形逻辑与 Java2d 代码紧密耦合。虽然从技术上讲是 Wilkonson 的图形语法的实现,但图形树中的每个组件都呈现给一个 java 组件。
我建议重构图形系统以输出图形的结构化规范(json、xml 等),然后可以将其传递给消费者(前端 Web、ipad 等)进行实际解析和渲染。这将使图形结构与实际渲染分离,理论上允许在任何客户端库或渲染格式中使用相同的输出/蓝图,无论是 d3.js、three.js、svg/canvas/webgl,甚至是本机代码。
这对我来说似乎很直观,但我的同事非常反对这个想法。相反,他们建议调整系统以在服务器端生成 d3 javascript 代码,然后客户端将直接使用这些代码。这将需要在每个图形的基础上实现所有图形设置代码(理论上使用一些模板引擎有条件地在结果 html 中包含 js)。我们的结果将直接与 d3 本身相关联。他们说好处是客户端不必做任何事情来呈现图形输出。
我在这里遗漏了什么吗?从长远来看,后一种方法是否更可取?还是我在以前的设计上走在正确的轨道上?在生成 javascript 方法中我应该考虑一些好处吗?或者,我应该如何构建我的论点,以支持序列化的图形规范,以便让更多人参与我的设计?
【问题讨论】:
-
我已投票结束此问题,因为我认为没有“最佳”答案。您可以用任何一种方式争论(就像您和您的同事所做的那样),而且由于我们不熟悉代码、要求等,我们当然处于更糟糕的位置,甚至无法发表意见。
-
我不太确定这是真的。我认为可能会有一个客观上更好的设计。并且社区在此类设计方面的经验可能比我或我的团队更多,因此可以帮助引导我们朝着正确的方向(随着时间的推移维护和适应的痛苦更少)。
-
那么,如果我们遵循同样的逻辑,任何问题“都没有最佳答案”。因此,我们应该关闭所有 SO 问题,并关闭整个站点! ;) :))) 但是,说真的,这个问题对我来说看起来很完美,实际上很好地反映了我们所经历的日常情况。
标签: java design-patterns interface d3.js