【发布时间】:2012-03-21 00:49:35
【问题描述】:
这是一个开放的 MVC 相关问题,我正在寻找批评和建议。
简要版: ViewA 用于查看 ModelA。 如果 ModelB 扩展 ModelA 并且 ViewB 用于查看 ModelB,ViewB 会继承自 ViewA 吗?
背景:
我创建了一个 Graph 类,其中包含一个顶点数组和一个边数组。 每个顶点都有一个 n 大小的整数数据数组。
我还为 2d-Graphs 创建了一个 GraphViewer 类,它只是为边绘制线条,为顶点绘制点。
现在我决定创建一个 GraphEditor 类,这是一个具有编辑功能的图形,例如它需要具有允许用户交互的方法和字段: 例子: selectVertex - 一种接受当前鼠标坐标并返回最接近该点的顶点的方法,以及 selectedVertices - 所有选定顶点的数组
我决定 GraphEditor 将继承自 Graph。 因为 GraphEditor 仍然是一个只有编辑功能的图表。
现在我想创建一个 GraphEditorViewer,它需要以不同的颜色绘制选定的顶点(例如),我想既然 GraphEditor 扩展了 Graph,也许 GraphEditorViewer 应该扩展 GraphViewer,但是我发现情况并非如此,因为新的类 GraphEditorViewer 不会“查看”常规图形。 所以我决定在 GraphEditorViewer 和 GraphViewer 之间使用“has-a”关系。 这意味着我必须公开很多 GraphViewer 的渲染相关方法,以便我可以从新类中调用它们。
我想知道您是否会采取不同的方式,您对我的选择有何看法。
谢谢
【问题讨论】:
标签: actionscript-3 model-view-controller oop design-patterns inheritance