各ノードを再帰的にクエリする以外に、識別子を指定してノードを検索するためのオプションはありますか?
4 に答える
訪問者は、複合オブジェクト内のノードを調べるのが常に楽しいです。
それらが一意の ID を持っている場合は、複合構造の各部分への直接参照を含むインデックスを蓄積することができます。
一方、複合構造内で識別子を再利用できる場合は、XPath のような検索に頼らなければならない場合があります。
ツリーを使用している場合、再帰は最も自然なことです。それ以外に、ツリーの外側でリストまたはコレクションを維持することができますが、これは不要に思えます。または、ツリー ノードのリストを単純に線形反復処理することもできます。これはおそらく遅くなりますが、少なくともトラバーサル固有のものはすべて削除されます。価値がある場合は、ノードからのコード。
abc 形式のすべてのノードを検索する特定のツリー クエリ (xpath など) が、レベル a で b をトラバースし、b を c でトラバースする以外のことを行う方法がわかりません。つまり、ある種のフィルタリングされた再帰的なツリー トラバーサル。
あなたがそれを実装する場合のみ。:-(
(パターン自体はその実装についてほとんど何も述べていません。さまざまなツール/プラットフォームが大きな違いを生みます。)
任意の検索を使用できます。
複合パターンが示す唯一のことは、1 つのオブジェクト、またはそれらのオブジェクトのコレクションが同じインターフェイスを実装する必要があるということです。
その実装内で何が起こるかは、複合パターンには関係ありません。