Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Frage zu Template Method Pattern

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
05.10.2007, 22:29 Uhr
~testo
Gast


Meine Konkrete Frage zum Template Method Pattern ist:

Wenn eine abgeleitete Klasse nur zusätzlich etwas tun soll, wie bringt man das in das "Skelett" ein?
Es macht doch wenig Sinn eine dummy-variable anzulegen die im Fall A nicht intialisiert wird und im Fall B schon, diese dann an die virtuelle Fuktion zu übergeben oder?
Aber andererseits müsste man doch wieder das ganze Skelett virtuell machen, wenn man in einer Version zusätzliche Variablen verwenden will und in der anderen nicht?

Ich versuche meine Frage an einem pseudo-beispielcode zu erklären:


C++:
    class skelett
{
public:
  void my_algorithm()
  {
    int* a = NULL;
    init_b();

    // hier die funktion:
    a = make_this();

    compute(a);
  }

   void init_b(//do something) {...};

protected:
     virtual void compute(int* a) = 0;
     virtual int* make_this() = 0;
};

class FallA : public skelett
{
protected:
  virtual int* make_this() { return NULL; }
  virtual void compute(int* a)
   {
         //mache was ohne a zu verwenden
    }
};

class FallB : public skelett
{
protected:
  virtual int* make_this()
  {
       //initialisiere a
       a = new int[4];
   }
  virtual void compute(int* a)
   {
         //hier mit a irgendwelche sachen machen
    }
};    



Danke euch für eure Hilfe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
15.10.2007, 17:26 Uhr
stephanw
localhorst


Ob das jetzt im konkreten Fall sinnvoll ist oder nicht hängt natürlich vom Beispiel ab Aber es ist ja technisch möglich und stinkt jetzt m.M. nach auch nicht zum HImmel. Wenn das Skelett nichts damit macht, kannst Du "a" ja bedenkenlos uninitailisiert lassen, um dann in compute eben ohne "a" arbeiten zu können.
Andererseits: wenn das Skelett mit "a" wirklich nichts macht, warum muss es sich dann damit befassen und es von Methode zu Methode weitergeben ? Dann könnte "a" ja auch komplett von den konkreten, abgeleiteten Klassen verwaltet werden.
--
Reden ist Schweigen und Silber ist Gold.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: