2017-11-15 11 views
0

最初に検索で自分自身を見つけることができたら謝っていますか?新しいものなので、私が欲しいものを説明するために適切な用語を使用しているかどうかはわかりません - ノブを蹴りません:)オブジェクトの自己参照順序付けツリーのデザインパターン(C#/ ASP.Net Core/EFCore)

a)の順序が重要とが保持される必要があり、「目標オブジェクト」の木、

B)として単独で立つことがあり、ツリー内の各ゴールオブジェクトを生成します1つのオブジェクト、またはサブゴールの集合を構成する(さらに、サブゴールをさらにサブレベルにするなど、5レベルの深さと言う)、

c)ツリーを効率的に編集する能力が必要です。任意のゴールオブジェクト、サブゴールの追加/削除/並べ替え/移動、ツリーへのブランチの枝刈り/追加)。 私は確かにこれを行う方法を工夫することができますが、自分のやり方がメモリ/処理と編集の管理に必要なコード量の両方で非常に非効率的であると強く疑う。

私の質問:私がこれを行うための効率的な方法を示すデザインパターンやチュートリアルに誰かを指すことができますか? (私は現在EFCoreは場合SQLserverを指しているとC#& ASP.NETコアの中に働いています)

パート2:C#のに適した基本的なデザインパターンの優れたセットを持っ書籍/サイトへの提言も歓迎されるであろう。

何かお手伝いいただきありがとうございました。私自身の質問に答えるために クリス

答えて

0

試み:

パート1:私がこれまでに発見した最も近い葉と複合クラスが継承する抽象クラスを使用して、コンポジットデザインパターンです。しかし、私はこれにa)葉をコンポジットに変換する機構とその逆を加えなければならないと思う。b)このパターンを見ることができるので、「順序問題と変更」制約は解決しない。いくつかの注文指数を実装し、順番に変更を管理する必要があります - 誰もこれらのことを効率的に行う方法がありますか?

パート2:Gang of Fourとhttp://www.dofactory.com/net/design-patternsがありますので、パート2は閉じていますが、明らかに他の提案も歓迎します。

0

あなたはプログラミングパターンを探していないのと同じように、データ構造を探しています。

Red-Black Treesをご覧ください。

これはノードの順序を保持する(準)バランスツリーであり、すべての演算は対数(すなわち効率的)です。