课堂设计问题

时间:2009-11-27 06:17:22

标签: design-patterns oop

我正在编写以下程序,我正在考虑在C ++中使用进行良好的设计

问题:
我正在写一个图库。有图< E>类。

不同的图算法在边缘上存储了不同类型的信息(潜力,成本,颜色,流量值,容量等)。对于每种算法,都有一个不同的EdgeClass作为模板参数传递给Graph类。

现在我想做的是在算法的每一步之后,我想写出Graphviz使用的图形的DOT文件。 (这样我可以生成图表,用于教学目的)。但是,图形应在每个步骤以不同方式着色(以及设置其他可能的属性)。边缘何时以及如何着色(或其他属性设置)取决于算法。

EdgeClass无法存储任何Graph绘图相关信息,因为DOT绘图工具更像是一个调试工具。但是,一旦边缘的属性已知,用于为图形对象编写DOT文件的算法非常通用,可以放在Graph类本身中。我可以在Graph< E>中编写一个名为dot()的函数。写出图表DOT的类。

我应该使用哪种设计模式允许图算法(如最短路径)设置边的属性,以便在调用图类的dot()函数时,它会显示EdgeClass内的信息以及算法特定的边缘属性也在DOT文件中,而不强迫我在EdgeClass本身中存储这些额外的图形相关属性?我怎样才能实现这种脱钩?

1 个答案:

答案 0 :(得分:0)

我推荐Strategy pattern
它看起来像你需要的。

另外,据我所知,您可以将图形设置数据分成独立的结构 我认为,这也是有道理的:您可以稍后将这些预设用于不同的图形。

祝你好运!