<?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[Design von Mehrschichtanwendungen (Service Registry vs Singleton vs X)]]></title><description><![CDATA[<p>Hallo! Ihr seit echt eine tolle Hilfe bei der Sammlung von Praxiserfahrung in C++! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> Jetzt stehe ich wieder von einer Designfrage.</p>
<p>Ich möchte eine klare Trennung zwischen meiner Service- und meiner Persistenzschicht haben, sogar soweit lose gekoppelt das ich später schnell und einfach die Persistenzschicht austauschen kann(z.B. *SQL gegen NoSQL). Der Zugriff auf die Persistenzschicht erfolgt über Klassen die nur rein virtuelle Methoden zur Verfügung stellen (diese werden dann von der jeweiligen eingesetzten Technologie implementiert). Die Serviceschicht weiß somit nichts von der eingesetzten Technik.</p>
<p>Nun zu meiner Frage: Wann und wo instantiiere ich die Klassen und wie mache ich das Lookup in den Services? Singleton entwickelt sich anscheinend immer mehr zu einem Anti-Pattern (zumindest was ich so über die Suche gefunden habe). Zentrale Factory Klassen oder eine Art zentrale Map finde ich aber auch nicht wirklich schön.</p>
<p>Wie macht ihr das?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/305990/design-von-mehrschichtanwendungen-service-registry-vs-singleton-vs-x</link><generator>RSS for Node</generator><lastBuildDate>Sat, 08 Aug 2026 12:07:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/305990.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 14 Jul 2012 13:45:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Design von Mehrschichtanwendungen (Service Registry vs Singleton vs X) on Sat, 14 Jul 2012 13:45:00 GMT]]></title><description><![CDATA[<p>Hallo! Ihr seit echt eine tolle Hilfe bei der Sammlung von Praxiserfahrung in C++! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> Jetzt stehe ich wieder von einer Designfrage.</p>
<p>Ich möchte eine klare Trennung zwischen meiner Service- und meiner Persistenzschicht haben, sogar soweit lose gekoppelt das ich später schnell und einfach die Persistenzschicht austauschen kann(z.B. *SQL gegen NoSQL). Der Zugriff auf die Persistenzschicht erfolgt über Klassen die nur rein virtuelle Methoden zur Verfügung stellen (diese werden dann von der jeweiligen eingesetzten Technologie implementiert). Die Serviceschicht weiß somit nichts von der eingesetzten Technik.</p>
<p>Nun zu meiner Frage: Wann und wo instantiiere ich die Klassen und wie mache ich das Lookup in den Services? Singleton entwickelt sich anscheinend immer mehr zu einem Anti-Pattern (zumindest was ich so über die Suche gefunden habe). Zentrale Factory Klassen oder eine Art zentrale Map finde ich aber auch nicht wirklich schön.</p>
<p>Wie macht ihr das?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2232734</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2232734</guid><dc:creator><![CDATA[jule86]]></dc:creator><pubDate>Sat, 14 Jul 2012 13:45:00 GMT</pubDate></item><item><title><![CDATA[Reply to Design von Mehrschichtanwendungen (Service Registry vs Singleton vs X) on Sat, 14 Jul 2012 14:14:56 GMT]]></title><description><![CDATA[<p>guck dir vielleicht mal die abstrakte fabrik an...</p>
<p>die ist eigentlich für genau sowas da. du hast die schnittstellen, aber möchtest nicht mit konkreten klassen arbeiten, und eben die werden von der abstract-factory gebaut</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2232740</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2232740</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Sat, 14 Jul 2012 14:14:56 GMT</pubDate></item><item><title><![CDATA[Reply to Design von Mehrschichtanwendungen (Service Registry vs Singleton vs X) on Sat, 14 Jul 2012 16:40:15 GMT]]></title><description><![CDATA[<p>In Java ganz klar Dependency Injection. In C++ am ehesten über manuelle Dependency Injection. Die Klasse, die das ganze aufsetzt und zusammenbaut, übergibt dem Service das Objekt, das die Persistenzschicht implementiert. Wie man an den Service selber rankommt ist etwas schwieriger (weil es potenziell viel mehr Klassen gibt, die irgendwo diesen Service brauche). Hier finde ich einen Singleton Service Locator (von mir aus abstrakt, damit man ihn z.B. für Unit Tests überschreiben kann) eigentlich ok. So lang nur eine Factory ein Singleton ist und nicht die Services selber, ist das ganze noch erweiterbar und austauschbar. Wobei ich auch hier nach Möglichkeit Dependency Injection bevorzugen würde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2232797</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2232797</guid><dc:creator><![CDATA[Mechanics]]></dc:creator><pubDate>Sat, 14 Jul 2012 16:40:15 GMT</pubDate></item><item><title><![CDATA[Reply to Design von Mehrschichtanwendungen (Service Registry vs Singleton vs X) on Sat, 14 Jul 2012 19:17:23 GMT]]></title><description><![CDATA[<p>was ist denn manuelle dependency injection in C++?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2232838</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2232838</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Sat, 14 Jul 2012 19:17:23 GMT</pubDate></item><item><title><![CDATA[Reply to Design von Mehrschichtanwendungen (Service Registry vs Singleton vs X) on Sat, 14 Jul 2012 19:57:26 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>was ist denn manuelle dependency injection in C++?</p>
</blockquote>
<p>Im Endeffekt dasselbe wie in Java. Also, z.B. die Abhängigkeiten im Konstruktor oder über Setter Methoden übergeben. Manuell, weil sich dann jemand selber drum kümmern muss. In Java würde das &quot;automatisch&quot; gehen, indem man die Abhängigkeiten z.B. in einer XML Datei deklariert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2232844</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2232844</guid><dc:creator><![CDATA[Mechanics]]></dc:creator><pubDate>Sat, 14 Jul 2012 19:57:26 GMT</pubDate></item><item><title><![CDATA[Reply to Design von Mehrschichtanwendungen (Service Registry vs Singleton vs X) on Sat, 14 Jul 2012 19:58:32 GMT]]></title><description><![CDATA[<p>Mechanics schrieb:</p>
<blockquote>
<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>was ist denn manuelle dependency injection in C++?</p>
</blockquote>
<p>Im Endeffekt dasselbe wie in Java. Also, z.B. die Abhängigkeiten im Konstruktor oder über Setter Methoden übergeben. Manuell, weil sich dann jemand selber drum kümmern muss. In Java würde das &quot;automatisch&quot; gehen, indem man die Abhängigkeiten z.B. in einer XML Datei deklariert.</p>
</blockquote>
<p>Du lebt noch in der Java Steinzeit, oder? Wer verwendet XML <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2232846</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2232846</guid><dc:creator><![CDATA[Zeus]]></dc:creator><pubDate>Sat, 14 Jul 2012 19:58:32 GMT</pubDate></item><item><title><![CDATA[Reply to Design von Mehrschichtanwendungen (Service Registry vs Singleton vs X) on Sat, 14 Jul 2012 20:26:43 GMT]]></title><description><![CDATA[<p>Zeus schrieb:</p>
<blockquote>
<p>Mechanics schrieb:</p>
<blockquote>
<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>was ist denn manuelle dependency injection in C++?</p>
</blockquote>
<p>Im Endeffekt dasselbe wie in Java. Also, z.B. die Abhängigkeiten im Konstruktor oder über Setter Methoden übergeben. Manuell, weil sich dann jemand selber drum kümmern muss. In Java würde das &quot;automatisch&quot; gehen, indem man die Abhängigkeiten z.B. in einer XML Datei deklariert.</p>
</blockquote>
<p>Du lebt noch in der Java Steinzeit, oder? Wer verwendet XML <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
</blockquote>
<p>Geschmackssache. Außerdem habe ich &quot;z.B.&quot; geschrieben. In der Tat ist es mir ziemlich egal, ob man sowas über XML, Annotations oder per Code konfiguriert. Ich bin XML gewohnt und kann damit auch leben, find die konkrete Methode aber völlig nebensächlich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2232848</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2232848</guid><dc:creator><![CDATA[Mechanics]]></dc:creator><pubDate>Sat, 14 Jul 2012 20:26:43 GMT</pubDate></item><item><title><![CDATA[Reply to Design von Mehrschichtanwendungen (Service Registry vs Singleton vs X) on Sat, 14 Jul 2012 21:45:09 GMT]]></title><description><![CDATA[<p>ok, könnt ihr mir dann nochmal kurz dependency injection zusammen fassen?</p>
<p>aus der java welt kenne ich das mit spring und xml halt, aber was da mit settern ist?!<br />
es ist da ja so, dass man inversion of control anwendet, sprich gegen schnittstellen programmiert und die konkreten klassen per spring und java beans injiziert.<br />
aber was haben getter/setter damit zu tun?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2232858</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2232858</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Sat, 14 Jul 2012 21:45:09 GMT</pubDate></item><item><title><![CDATA[Reply to Design von Mehrschichtanwendungen (Service Registry vs Singleton vs X) on Sat, 14 Jul 2012 22:04:30 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>ok, könnt ihr mir dann nochmal kurz dependency injection zusammen fassen?</p>
<p>aus der java welt kenne ich das mit spring und xml halt, aber was da mit settern ist?!<br />
es ist da ja so, dass man inversion of control anwendet, sprich gegen schnittstellen programmiert und die konkreten klassen per spring und java beans injiziert.<br />
aber was haben getter/setter damit zu tun?</p>
</blockquote>
<p>Und wie injiziert man sie? Über den Konstruktor bzw. über setter Methoden. Das ist das was man in Spring als property angeben würde, irgendwie so:</p>
<pre><code>&lt;bean id=&quot;...&quot; class=&quot;...&quot;&gt;
&lt;property name=&quot;bla&quot; ref=&quot;...&quot; /&gt;
&lt;/bean&gt;
</code></pre>
<p>Dann müsste die entsprechende Klasse eine Methode setBla haben.</p>
<p>Und mit manuell meinte ich eben, dass jemand diese Methode eben von Hand aufruft, und nicht durch das Framework.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2232864</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2232864</guid><dc:creator><![CDATA[Mechanics]]></dc:creator><pubDate>Sat, 14 Jul 2012 22:04:30 GMT</pubDate></item><item><title><![CDATA[Reply to Design von Mehrschichtanwendungen (Service Registry vs Singleton vs X) on Sun, 15 Jul 2012 12:20:58 GMT]]></title><description><![CDATA[<p>Die Sachen die in C# / Java üblich sind, sind in C++ total unüblich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2232935</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2232935</guid><dc:creator><![CDATA[mech]]></dc:creator><pubDate>Sun, 15 Jul 2012 12:20:58 GMT</pubDate></item></channel></rss>