5

ACLの階層をどこで管理するのが最適ですか?

ACLの階層を管理するための3つの可能性があります。

1) ACL自体が階層を管理します。

class Acl {
  Acl parent;
  // ...
}

2)階層を管理するための別個のツリー構造を構築します。

3) ACLの暗黙的な階層として既存の階層を使用します(ファイルシステムにすでに階層がある場合など)。

次のコードは、既存の階層を使用する1つの可能性です。

interface AclHolder {
    Acl getAcl();
}

public class Folder implements AclHolder {
    private AclHolder parent;
    private Acl acl;

    @Override
    public Acl getAcl(){
        return acl==null ? parent.getAcl() : acl;
    }
}

別のアプローチは、ルールを使用して、他のものに対して階層的なものを定義することです。

1)や2)のように明示的なACL階層を作成することは、通常、システム構造を反映する必要があり、複製の形式であるため、問題になる可能性があると思います。

最善の方法は何ですか?

4

1 に答える 1

0

パフォーマンス上の理由から、動的継承に反対することにしました。継承はユーザーにとって便利な機能にすぎませんが、ACLに直接実装されることはありません。変更は子ACLに伝播されますが、子ACLはその親を認識しません。これを行うには、既存の階層(ファイルシステムの階層など)を使用します。

于 2011-07-28T07:13:07.453 に答える