【发布时间】:2010-07-08 20:22:59
【问题描述】:
我倾向于有一个类来描述一个一般概念和子类来描述该概念的差异。例如,Polygon Rectangle、Triangle 等}。
然而,我经常发现我有这些层次结构的各种表示。例如,我想将图形表示(例如,QPolygon)或物理表示(质量、centerOfMass)等与我拥有的另一个表示分开。
在我的例子中,我有一个纯数据对象的层次结构(Command WaitCommand,UnknownCommand,等等}),并且每个数据类都有一个匹配的 GUI 表示(WaitCommandPanel, UnknownCommandPanel)。
我的问题是,一旦我构建了数据表示,我需要实现从数据到 GUI 的飞跃。
给定一个数据对象列表,我希望能够构造相应的 GUI 元素,但将两种表示分开。
一个[糟糕的]解决方案是让每个Command 有能力(即Command::getPanel())返回其GUI 表示。我不喜欢这样,因为我的数据类现在有表示代码。
另一个解决方案(我暂时采用的)是进行查找。也就是说,在启动 GUI 时,给定 Commands 的列表(泛化),该函数根据其特殊类型确定要创建的对象。我也不喜欢这个。
有什么建议吗?
【问题讨论】:
标签: design-patterns oop code-separation