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階層を作成することは、通常、システム構造を反映する必要があり、複製の形式であるため、問題になる可能性があると思います。
最善の方法は何ですか?