<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[ein Pattern verwenden?]]></title><description><![CDATA[<p>kann ich hier ein Design Pattern verwenden?<br />
original:</p>
<pre><code class="language-cpp">class CDisplay
{
   ...
   virtual void Draw(){
   //draw for general situation
   }
};

class CFirstDisplay{
   ...
   void Draw(){
   //inital some data for this class
   //special Draw for this class
   }
};

class CSecondDisplay{
   ...
   void Draw(){
      //initial some data for this class
      CDisplay::Draw(); //here i dont like it
   }
};

class CThirdDisplay{
   ...
   void Draw(){
      //initial some data for this class
      CDisplay::Draw(); //here i dont like it
   }
};
</code></pre>
<p>man kann natürlich auch Draw als class definieren, dann spezielle draw methode in abgleiteten Klassen definieren, aber man kann nicht vermeiden, in abgleiteten Klassen, die methoden von superclass aufrufen.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/219568/ein-pattern-verwenden</link><generator>RSS for Node</generator><lastBuildDate>Thu, 08 Oct 2026 01:13:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/219568.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 05 Aug 2008 06:23:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to ein Pattern verwenden? on Tue, 05 Aug 2008 06:23:51 GMT]]></title><description><![CDATA[<p>kann ich hier ein Design Pattern verwenden?<br />
original:</p>
<pre><code class="language-cpp">class CDisplay
{
   ...
   virtual void Draw(){
   //draw for general situation
   }
};

class CFirstDisplay{
   ...
   void Draw(){
   //inital some data for this class
   //special Draw for this class
   }
};

class CSecondDisplay{
   ...
   void Draw(){
      //initial some data for this class
      CDisplay::Draw(); //here i dont like it
   }
};

class CThirdDisplay{
   ...
   void Draw(){
      //initial some data for this class
      CDisplay::Draw(); //here i dont like it
   }
};
</code></pre>
<p>man kann natürlich auch Draw als class definieren, dann spezielle draw methode in abgleiteten Klassen definieren, aber man kann nicht vermeiden, in abgleiteten Klassen, die methoden von superclass aufrufen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1559352</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1559352</guid><dc:creator><![CDATA[netrobot]]></dc:creator><pubDate>Tue, 05 Aug 2008 06:23:51 GMT</pubDate></item><item><title><![CDATA[Reply to ein Pattern verwenden? on Tue, 05 Aug 2008 06:43:46 GMT]]></title><description><![CDATA[<p>ich nehme mal an dass du die anderen Displays von CDisplay ableitest.<br />
Evtl. wäre das template method pattern was für dich:</p>
<pre><code class="language-cpp">class CDisplay
{
public:
  void Draw() //non-virtual, children don't override the method directly
  {
    doInit();
    doDraw();
  }
protected:
  virtual void doInit() = 0;
  virtual void doDraw() { /* ... general drawing */ }
};

class CFirstDisplay : public CDisplay
{
  //Draw() is inherited from CDisplay...
protected:
  virtual void doInit() { /* special initialisation for this class */ }
  virtual void doDraw() { /* special drawing for this class */ }
};

class CSecondDisplay : public CDisplay
{
protected:
  virtual void doInit() { /*...*/ }
  // doDraw() not overridden because the general drawing is sufficient
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1559363</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1559363</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 05 Aug 2008 06:43:46 GMT</pubDate></item><item><title><![CDATA[Reply to ein Pattern verwenden? on Tue, 05 Aug 2008 06:50:10 GMT]]></title><description><![CDATA[<p>Das Template Method Pattern sollte hier anwendbar sein.</p>
<pre><code class="language-cpp">class Base
{
  void Draw() {
    // do some basic stuff
    doDraw();
    // some other stuff
  }
  virtual doDraw() {
    // empty
  }
}
</code></pre>
<p>Wer erweiterte Sachen machen will, überschreibt doDraw. Die Basisbehandlung findet in Draw statt.</p>
<p>Edit: Hmm Pumuckl war schneller <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1559366</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1559366</guid><dc:creator><![CDATA[7H3 N4C3R]]></dc:creator><pubDate>Tue, 05 Aug 2008 06:50:10 GMT</pubDate></item><item><title><![CDATA[Reply to ein Pattern verwenden? on Tue, 05 Aug 2008 06:55:41 GMT]]></title><description><![CDATA[<p><a href="http://1.es" rel="nofollow">1.es</a> scheint, strategie und template pattern sind fast gleich<br />
2. die Lösung, die ich vorher geschrieben hatte, ist ja auch korrekt, aber ich mag es nicht, wieso weiss ich auch nicht, welche Nachteile hat es in sich?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1559369</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1559369</guid><dc:creator><![CDATA[netrobot]]></dc:creator><pubDate>Tue, 05 Aug 2008 06:55:41 GMT</pubDate></item><item><title><![CDATA[Reply to ein Pattern verwenden? on Tue, 05 Aug 2008 09:33:09 GMT]]></title><description><![CDATA[<p>Das template method pattern und das strategy pattern sehen auf den ertsen Blick zwar ähnlich aus, sind aber doch verschieden: beim strategy pattern kann man die selbe Klasse an einer Stelle mit zwei verschiedenen Verhaltensweisen ausstatten. Bei dir hieße das, dass du dieselbe Displayklasse auf verschiedene Arten zeichnest, dass sich die verschiedenen Objekte also nur in ihrem Zeichenverhalten unterscheiden und ansonsten identisch sind.<br />
Beim template method pattern wird dagegen das grundlegende Verhalten von Kindklassen vorgeschrieben, wobei einzelne Aspekte dieses Verhaltens von den Kindklassen abgeändert werden können. Im grunde sind beide Konzepte also Orthogonal:</p>
<p>Strategy pattern = gleiche Klasse, unterschiedliches Verhalten<br />
template method pattern = verschiedene Klassen, ähnliche Verhaltensweise</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1559474</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1559474</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 05 Aug 2008 09:33:09 GMT</pubDate></item><item><title><![CDATA[Reply to ein Pattern verwenden? on Wed, 06 Aug 2008 06:34:01 GMT]]></title><description><![CDATA[<p>wenn wir nur die DoInit() anschauen, ist es kein strategie pattern? nicht direkt, aber wenn ich die DoInit in einer Base Class einpacke.Z.B</p>
<pre><code class="language-cpp">class CInitBase
{
   virtual void DoInit()=0;
};
class CInitConcrete1 : public CInitBase
{
   void DoInit(){/*implementation*/}
};
class CInitConcrete2 : public CInitBase
{
   void DoInit(){/*implementation*/}
};
</code></pre>
<p>Ob es einen Sinn macht, ist eine andere Frage</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1559945</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1559945</guid><dc:creator><![CDATA[netrobot]]></dc:creator><pubDate>Wed, 06 Aug 2008 06:34:01 GMT</pubDate></item><item><title><![CDATA[Reply to ein Pattern verwenden? on Wed, 06 Aug 2008 06:52:45 GMT]]></title><description><![CDATA[<p>die CInit-Klassen für sich sind natürlich immernoch kein strategy-pattern. Wenn du deiner CDisplay-Klasse jettz eine CInit-Klase verpasst um deren Verhalten zu steuern, dann ist das ein Strategy-Pattern - allerdings ist eines der wichtigen Merkmale des Strategy-Pattern, dass man das Verhalten zur Laufzeit ändern kann (indem du zwischendurch die CInit-Klasse wechselst). Allerdings scheint das nicht deinen Absichten zu entsprechen, das Template Method Pattern wäre also ausreichend. Natürlich kannst du das Strategy-Pattern verwenden, du bekommst allerdings auf Kosten einer zusätzlichen Indirektion ein Feature das du in dem Umfang nicht brauchst. (Du könntest noch viel mehr Patterns benutzen, allerdings werden dir die meisten keinen besonderen Vorteil bringen, den Code nur unübersichtlich machen usw.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1559958</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1559958</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 06 Aug 2008 06:52:45 GMT</pubDate></item></channel></rss>