我有一個類RT
建模一個有根樹(實質上)。設計模式:只有實例類,如果它不是已經實例化的對象的副本
比方說,我已經拿着下面的樹實例rt1
:
1
/\
0 2
現在,我可以構造另一個實例(rt2
)持以下三種:
5
/\
4 9
然而,很明顯這兩棵樹是同構的(即它們具有相同的結構,並且與重命名節點相同)。我已經有了一個常規計算,兩棵有根樹是否是同構的(所以這個子問題已經解決了)。
現在我的問題:爲了我的目的,我想要一個設計模式,防止程序實際構建一個新的實例rt2
,而只是給元素rt1
(它已經構建)的引用。
在另一方面,考慮另一棵樹(rt3
),即如下:
1
/\
2 5
/
7
呼籲該圖應該創建表示此圖的新實例(因爲這不是同構rt1
建設程序,因此 - 至今尚未產生)。
有這樣的事嗎?
我看着工廠模式,但我不知道(工廠似乎總是構建一個新的元素)。任何一個人都可以告訴我一種解決這個特殊問題的「最佳實踐」方法。
您是否需要全局訪問對象?辛格爾頓可能是當時要走的路。 – 2013-04-21 12:53:49
工廠可以緩存構造元素並返回它們而不是構造新的實例。但是create()方法的參數是什麼? – 2013-04-21 12:56:13
@JBNizet感謝您的回答。這是我的走向的路線。這是「現實」嗎?或者還有其他可能性(由於某些原因更廣泛使用)? create()方法的參數是(例如)樹的邊緣。 – phimuemue 2013-04-21 12:58:49