2010-02-12 34 views
5

ACL'lerin hiyerarşisini en iyi nerede yönetmeliyim? hiyerarşi yönetmek için ayrı bir ağaç yapısına OluşturmaACL devralma nerede yönetilir?

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

2):

1) ACL kendileri hiyerarşiyi yönetmek:

Ben ACL bir hiyerarşisini yönetmek için üç olasılık görüyorum .

3) Halihazırda var olan bir hiyerarşiyi, ACL'lerin örtük hiyerarşisi olarak kullanmak (bir dosya sistemi zaten bir hiyerarşi içerir).

Aşağıdaki kod varolan hiyerarşiyi kullanmak üzere bir olasılık olacaktır:

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; 
    } 
} 

diğer yaklaşım başka ne için hiyerarşik ne olduğunu tanımlamak için kuralları kullanmak olabilir.

1) ve 2) gibi açık bir ACL hiyerarşisi oluşturmak sorunlu olabileceğini düşünüyorum çünkü bu hiyerarşinin genellikle sistem yapısını yansıtması ve bir çoğaltma şekli olması gerekir.

En iyi yol nedir?

cevap

0

Performans nedenleriyle dinamik mirasa karşı karar verdim. Kalıtım, kullanıcılar için yalnızca bir kolaylık özelliği olacaktır, ancak doğrudan ACL'de uygulanmayacaktır. Değişiklikler çocuk ACL'lerine yayılır, ancak çocuk ACL'leri ebeveynlerini bilmez. Bunu yapmak için mevcut hiyerarşiyi (dosya sistemindeki hiyerarşi gibi) kullanacağım.