0

私はシステムを設計することを懇願しています。そして、組織を代表する非常に柔軟な構造を持つことが不可欠です。

本質的な要件は単純です。

  1. コンテナ (組織単位) の階層を持つ
  2. コンテナーには、次のような他のエンティティ (他のコンテナーを含む) が含まれます。
    • ユーザーを含むことができるグループ
    • カレンダー
    • 等...
  3. また、構造に応じて許可および登録プロセスを容易にする要件もあります。
  4. ユーザー\グループは、他のコンテナーに対して異なるロール\アクセス許可で登録でき、他のすべてのエンティティに対して同じロールのアクセス許可が付与されます。また、グループとカレンダーのマネージャーを定義する機能もあります。

最初の考え:

  1. 「複合」設計パターンを使用してエンティティを表す:
    • [[インターフェイス]] IEntity --> int ID、string Name ...
  2. すべてのエンティティは同じインターフェースを実装します
  3. コンテナ エンティティは、これらのエンティティを参照する子のリストを保持します。
  4. 各エンティティは、リーフでユーザーのリストを保持する「権限ツリー」を保持します。このツリーは、ユーザーが管理者としてエンティティに登録される役割と方法を表します。つまり、ユーザーがグループを通じて所有者として登録されている場合、ツリーには所有者 --> グループ 1 --> ユーザー 1 が表示されます。

熟考:

  1. 各エンティティには独自の Delete\ Add メソッドが必要ですか? インターフェイスレベルで定義されているか、エンティティの追加と編集のすべてのタスクを処理する「EntitiesManager」のような別のクラスが必要です。
  2. パーミッション ツリー情報を保持するには、データベースをどのようにモデル化すればよいですか?

このトピックに関するアイデア、修正、教訓、提案をいただければ幸いです。

前もって感謝します...

4

1 に答える 1

1

あなたの熟考のために、私は次のことをお勧めします:

  1. 現在、すべてのエンティティを認識しておらず、それらの構造がかなり異なる可能性があると仮定すると、エンティティ クラスで作成/削除のロジックをより適切にカプセル化する必要があります。デフォルトの実装でより一般的なスーパークラスを持つことは良い考えです。
  2. パーミッションツリーについて。このためのエンティティ モデルは既に完了していますか? あなたの場合、最善のアプローチはトップダウンです。すでにエンティティモデルを持っている場合は、エンティティモデルをデータベースモデルにマップする方が簡単です:)
于 2012-08-13T09:06:32.433 に答える