我有一个为特定实体绘制图形的类,图形节点是可点击的,因此我有特定的方法使被点击的项目显示适当的信息。
由于这只是一个原型,我没有考虑其他实体 - 它们将有完全不同的节点点击。
我不确定如何使用继承我可以拆分它所以我有一个图形作为主类,并根据什么实体(绘制图形的类型)拆分点击项目的相关方法,以便它们被隔离到他们自己的空间?
例如,类型
的图表Bannana - 具有可点击实体的皮肤,大小,颜色和数量
但是类型为
的图表橙色 - 有颜色,片段,橙色,数量
任何想法,抱歉这个糟糕的例子:/
由于
下面我们有一个实体的xml文件,基于节点类型的层次结构是树的绘制方式。其他实体将以类似方式布局,但具有不同的价值。这有助于澄清问题吗?也可能值得一提的是,不同的实体会分享一些相同的项目,所以例如所有这些实体都有点击查看复合图像标签
<graph>
<node label="Batch">
<node label="Searched Batch">
<node label ="a batch number" />
</node>
<node label="Compound Number">
<node label ="a compound number" />
</node>
<node label="Parent Number">
<node label ="a parent number" />
</node>
<node label="Chemist Name">
<node label ="Name 1" />
</node>
<node label="Quantity Available">
<node label ="N/A" />
</node>
<node label="Molecular Formula">
<node label ="a molecular formula" />
</node>
<node label="Notebook Number">
<node label="a notebook number" />
</node>
<node label="Analytical Images">
<node label ="show some pdf files" />
</node>
<node label="Who has Registered Batches">
<node label ="Name 1" />
<node label ="Name 2" />
<node label ="Name 3" />
<node label ="Name 4" />
<node label ="Name 5" />
</node>
<node label="Chemical Structure" >
<node label="Click to view compound image" />
</node>
</node>
</graph>
答案 0 :(得分:0)
好的,我将从基础Graph类开始。从那里我将为每个图表类型创建一个子类,每个类型都继承自基本Graph。基本Graph类几乎肯定会有一个方法Draw(),它将显示图形,这将被每个子类重写,允许每个图形独立绘制。在绘制每个图形时,您将使用适当的对象来表示图形及其所需的功能,在这里您可以改变节点类型。
看看ZedGraph,这是一个非常全面的图形/图表库,它是开源的,所以你可以在那里探索对象图,看看每种不同的图表类型是如何演变的。
答案 1 :(得分:0)
从图表的角度来看,我会使用一个界面来显示你想要在图表中显示的对象,这个界面应该以一种常见的方式公开图表的属性,例如:一个关键值对集合...
答案 2 :(得分:0)
我建议您查看Composite Visitor Pattern。
当然,你不仅需要绘制这些东西,还要坚持图形,执行命令等。
如果您将逻辑放入类层次结构本身,它最终会变得越来越大,条件逻辑变得混乱,依赖于UI组件等。