Muszę zarządzać pewną grupą obiektów klasy MyObject.
Każdy obiekt jest identyfikowany poprzez trzy stringi o przykładowych nazwach: type, instance, name.
Załóżmy że

Obiekt 1. jest identyfikowany przez type:myType; instance:myInstance; name:myName;
Obiekt 2. jest identyfikowany przez type:myType; instance:myInstance2; name:myName2;
Obiekt 3. jest identyfikowany przez type:myType2; instance:myInstance3; name:myName3;
Obiekt 4. jest identyfikowany przez type:myType2; instance:myInstance3; name:myName4;

Chcę ażeby wywołanie

get("myType") zwraca obiekty 1. i 2.
get("myType").get("myInstance") zwraca obiekt 1.
get("myType2").get("myInstance3") zwraca obiekty 3. and 4.
get("myType2").get("myInstance3").get("myName4") zwraca obiekt 4.

Pomysł nie jest mój dlatego nie za bardzo go rozumiem. Polega on na tym żeby stworzyć sobie trzy elementową strukturę:
Obiekt root agreguje obiekt A, A agreguje B, B agreguje C.
Zapamiętałem taki szkic
user image
Obiekty A, B i C mają metodę get(String). Nie wiem czy root też ma mieć.

Teraz nie rozumiem jak powinna wyglądać klasa obiektów A,B,C. Czy powinna zawierać np. List<MyObject>?

Czy teraz do obiektu MyObjectCollection a = new MyObjectCollection(); powinno się wkładać wszystkie MyObject których type = "myType"?
Do obiektu MyObjectCollection a2 = new MyObjectCollection(); powinno się wkładać wszystkie MyObject których type = "myType2"?
Do obiektu MyObjectCollection b = new MyObjectCollection(); powinno się wkładać wszystkie MyObject których instance = "myInstance"?
Nie wiem, czy to o to chodziło, nie kapuję.