这是一个开放的MVC相关问题,我正在寻找批评和建议。GraphViewer类和GraphEditorViewer类之间的关系
简要版本: ViewA用于查看ModelA。 如果ModelB扩展ModelA并且ViewB用于查看ModelB,那么ViewB将继承ViewA?
背景:
我已经创建了一个图形类,含有顶点数组和边缘的阵列。 顶点每个都有一个n大小的整型数据数组。
我还为2d图形创建了一个GraphViewer类,它只为顶点绘制边和点的线。
现在我决定创建一个GraphEditor类,也就是与编辑功能的曲线图,例如它需要有方法和允许用户交互字段: 例如: selectVertex - 接受当前鼠标座标的方法和返回最接近该点的顶点,并且 selectedVertices - 选择的所有顶点的数组
我决定GraphEditor将从Graph继承。 由于GraphEditor仍然只是具有编辑功能的图形。
现在我想创建一个GraphEditorViewer,它需要绘制不同颜色的选定顶点(例如),我认为自从GraphEditor扩展Graph之后,或许GraphEditorViewer应该扩展GraphViewer,但是我发现情况并非如此,新类GraphEditorViewer不'查看'正则图。 所以我决定在GraphEditorViewer和GraphViewer之间使用'has-a'关系。这意味着我不得不公开许多与GraphViewer相关的渲染方法,所以我可以从新类中调用它们。
我想知道你是否会以不同的方式去做,你对我的选择有什么看法。
感谢