2009-11-27 69 views
0

我寫了下面的程序,我用C想了好設計爲它++類設計問題

問題:
我寫的圖形庫。有圖表< E>類。

不同的圖算法在邊上存儲不同類型的信息(電位,成本,顏色,流值,容量等)對於每種算法,都有一個不同的EdgeClass作爲模板參數傳遞給Graph類。

現在我想要做的是,該算法的每一步之後,我希望寫出來供圖中的DOT文件由Graphviz的使用。 (這樣我可以生成圖表,用於教學目的)。但是,圖表應該在每個步驟以不同方式着色邊緣(以及其他可能的屬性)。邊緣何時以及如何着色(或其他屬性設置)取決於算法。

的EdgeClass不能存儲任何圖形圖像相關的信息作爲DOT繪圖工具更像是一個調試工具。但是,一旦已知邊的屬性,用於爲圖對象編寫DOT文件的算法就非常通用,並且可以放在Graph類本身中。我可以在Graph < E>類中編寫一個名爲dot()的函數,它爲圖表寫出DOT。

我應該使用哪種設計模式,允許圖形算法(如最短路徑)設置邊的屬性,以便當調用圖類的dot()函數時,它還在EdgeClass中顯示信息作爲DOT文件中特定的算法邊緣屬性而不強迫我將這些附加的圖形相關屬性存儲在EdgeClass本身中?我怎樣才能實現這種解耦?

回答

0

我推薦Strategy pattern
它看起來像你所需要的。

此外,據我理解,可以將圖形設置數據分成多個獨立的結構。
我想,這也是有道理的:您可以稍後將這些預設用於不同的圖形。

祝你好運!