Witam, walczę z wykorzystaniem wzorca projektowego command do stworzenia programu do tworzenia grafu. Wykorzystanie command ma umożliwić mi cofanie operacji. Oto co wymyśliłem do tej pory:

class graph{
        private:
            std::list<wezel *> pomieszczenia;
        public:
            graph(){}
            void dodajwezel(type key);
            void usunwezel(type key);
            void wyświetl_all();
};

class addroom : public command{
    private:
        type key;
        graph *g;
    public:
        addroom(graph* gr, type k){
        g=gr;
        key=k;
        }
        void execute(){
            g->dodajwezel(key);
        }
        void undo(){
            g->usunwezel(key);
        }

Generalne założenie jest takie, że klasa graph ma swoje metody. Chcąc wykonać metodę tworze odpowiedni obiekt z parametrami z jakimi chcę wywołać metodę w graphie. Jest to mój pierwszy projekt z zastosowaniem tego wzorca i nie jestem pewien czy jest to rozwiązanie poprawne w sensie ideologicznym. Myślałem również o tym, żeby do konstruktora wrzucić wywołanie g->dodajwezel(key) a destruktorze g->usunwezel(key) ale nie jestem pewien czy to dobre rozwiązanie. Bardzo proszę o opinię bardziej doświadczonych ode mnie.