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.