¿Dónde debo gestionar mejor una jerarquía de ACL?¿Dónde administrar la herencia de ACL?
veo tres posibilidades para gestionar una jerarquía de ACL:
1) Las ACL mismos se ocupan de la jerarquía:
class Acl {
Acl parent;
// ...
}
2) La construcción de una estructura de árbol independiente para gestionar la jerarquía .
3) Usar una jerarquía ya existente como la jerarquía implícita para las ACL (como un sistema de archivos que ya tiene una jerarquía).
El siguiente código sería una posibilidad de utilizar una jerarquía existente:
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;
}
}
Otro enfoque podría ser el uso de reglas para definir lo que es jerárquica para qué más.
Creo que podría ser problemático crear una jerarquía de ACL explícita como en 1) y 2) porque esta jerarquía generalmente tiene que reflejar la estructura del sistema y es una forma de duplicación.
¿Cuál es la mejor manera?