Problem może trywialny, głupio się czuję pisząc ten post, wakacje w pełni głowa nie pracuje

Chciałbym napisać sobie prostą klasę coś a'la parser BBCode i mam taką rozkminę.
Są dwie klasy - Tag oraz Attribute (podobnie jak w HTML-u). Jeden tag może mieć wiele atrybutów. Zamysł jest taki, że każdy nowy Tag i każdy nowy Atrybut to osobna klasa, która posiada swoje unikalne właściwości. Klasa Tag miałaby prywatną właściwoiść - tablicę z FQCN atrybutów, które można w nim użyć. Ale chciałbym, żebym w różnych przypadkach mógł z dostępnych atrybutów wybrać te, które mnie insteresują w danym momencie. I teraz pytanie, czy stworzyć drugą właściwość - dozwolone atrybuty, czy może dać sobie spokój z pchaniem tego do klas i stworzyć np. nową klasę - BBCodeRights, która zajęłaby się powiązaniami Tag - Atrybut?