RT
私は(本質的に)ルートツリーをモデル化するクラスを持っています。
たとえばrt1
、次のツリーを保持するインスタンスが既にあるとします。
1
/ \
0 2
これで、次のツリーを保持する別のインスタンス ( ) を作成できます。rt2
5
/ \
4 9
ただし、これら 2 つのツリーが同形であることは明らかです (つまり、同じ構造を持ち、ノードの名前変更までは同じです)。2 つの根付き木が同型かどうかを計算するルーチンが既にあります (したがって、この部分問題は既に解決されています)。
ここで私の質問: 私の目的のために、プログラムが の新しいインスタンスを実際に構築するのを防ぎ、rt2
代わりにrt1
(既に構築されている) 要素への参照を与えるだけの設計パターンが必要です。
一方、別のツリー ( rt3
)、つまり次のようなものを考えてみましょう。
1
/ \
2 5
/
7
このグラフに対して呼び出される構築ルーチンは、このグラフを表す新しいインスタンスを作成する必要があります (これは と同型ではなくrt1
、したがって、これまで生成されていないため)。
そのようなことはありますか?
factory パターンを見ましたが、わかりません (factory は常に新しい要素を構築するようです)。この特定の問題を解決するための「ベストプラクティス」の方法を教えてください。