Datenstruktur Frage



  • Hallo,

    eine Frage zu meiner Datenstruktur:
    Ich habe einen Quadtree und die Blätter haben einen Zeiger auf einen Patch (Ein Patch ist einfach ein Haufen Dreiecke).
    In PseudoCode:

    class Quadtree {
       Node* root;
    
    };
    
    struct Node {
       std::list<Node*> children;
       Patch* patch; // Für alle inneren Knoten ist patch = NULL;
    };
    

    Jetzt habe ich einige Daten, die für ALLE Patches gelten. z.B. habe ich einen Buffer, der sich ab und zu ändert, aber den ich nur einmal für ALLE Patches brauche. Im Moment habe ich alle diese "shared" Daten in die Klasse Patch geschoben und static gemacht:

    class Patch {
       // shared Zeugs
       static Buffer* buffer;
    public:
      static void fillBuffer();
    };
    

    Ferner brauche ich eine Liste mit Patches, auch die habe ich als static Member in Patch hinzugefügt.
    Dadurch ist meine Klasse Patch jetzt aber ziemlich groß. Findet ihr das Design ok oder sollte ich diese Dinge, die es nur einmal für alle Patches in die Klasse Quadtree schieben? Oder ganz anders?



  • Ich fang mal mit der Liste der Patches an:
    Wenn die Liste der Patches nur für 'Patch-interne' Zwecke verwendet wird ist deine Lösung ok weil du damit ohne zusätzliche Klassen garantieren kannst dass jeder erzeugte Patch in die Liste eingetragen wird.
    Wenn du auch von außerhalb auf die Liste zugreifen musst wäre eine Patch-Factory imo eine gute Lösung weil die Aufgabenbereiche dann klar gegliedert sind.

    Zu den gemeinsamen Daten:
    Wenn die Daten logisch zu den Patches gehören würde ich den Zugriff in der Patch-Klasse lassen.
    Falls es mehr wird als ein Pointer ist wäre eine zusätliche Wrapper-Klasse angebracht.

    Das ist zumindest meine bescheiden Meinung 😃


Anmelden zum Antworten