2009-11-27 82 views
0

我写了下面的程序,我用C想了好设计为它++类设计问题

问题:
我写的图形库。有图表< E>类。

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

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

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

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

回答

0

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

此外,据我理解,可以将图形设置数据分成多个独立的结构。
我想,这也是有道理的:您可以稍后将这些预设用于不同的图形。

祝你好运!