<?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[DesignPattern Depandency Injection mit Lazy Initialization]]></title><description><![CDATA[<p>In PHP kann ich per instanceof in einer Bedingung prüfen ob die Klassen eine bestimmte Schnitstelle enthält um z.B. eine Lazy Initialization in einer Depandency Injection zu realisieren.</p>
<pre><code>class Dependant 
{
	private $logger = NULL;

	public function set_logger(\Interfaces\Logger $logger) 
	{
		$this-&gt;logger = $logger;
	}

	// Lazy Initialization
	public function get_logger()
	{
		if(!($this-&gt;logger instanceof Interfaces\Logger))
		{
			$this-&gt;logger = new Output();
		}
		return $this-&gt;logger;
	}

	public function do_stuff()
	{
		// wenn nicht per set_logger gesetzt dann initialisieren
		$logger = $this-&gt;get_logger();
		$msg = 'i will do the right stuff&lt;br&gt;';
		$logger-&gt;write($msg);
	}
}
</code></pre>
<p>Wie geht sowas in C++?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/282471/designpattern-depandency-injection-mit-lazy-initialization</link><generator>RSS for Node</generator><lastBuildDate>Sun, 23 Aug 2026 02:47:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/282471.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 20 Feb 2011 18:16:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to DesignPattern Depandency Injection mit Lazy Initialization on Sun, 20 Feb 2011 18:16:36 GMT]]></title><description><![CDATA[<p>In PHP kann ich per instanceof in einer Bedingung prüfen ob die Klassen eine bestimmte Schnitstelle enthält um z.B. eine Lazy Initialization in einer Depandency Injection zu realisieren.</p>
<pre><code>class Dependant 
{
	private $logger = NULL;

	public function set_logger(\Interfaces\Logger $logger) 
	{
		$this-&gt;logger = $logger;
	}

	// Lazy Initialization
	public function get_logger()
	{
		if(!($this-&gt;logger instanceof Interfaces\Logger))
		{
			$this-&gt;logger = new Output();
		}
		return $this-&gt;logger;
	}

	public function do_stuff()
	{
		// wenn nicht per set_logger gesetzt dann initialisieren
		$logger = $this-&gt;get_logger();
		$msg = 'i will do the right stuff&lt;br&gt;';
		$logger-&gt;write($msg);
	}
}
</code></pre>
<p>Wie geht sowas in C++?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2023858</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2023858</guid><dc:creator><![CDATA[cppneuling2011]]></dc:creator><pubDate>Sun, 20 Feb 2011 18:16:36 GMT</pubDate></item><item><title><![CDATA[Reply to DesignPattern Depandency Injection mit Lazy Initialization on Sun, 20 Feb 2011 18:21:45 GMT]]></title><description><![CDATA[<p>typeid &amp; dynamic_cast -&gt; RTTI</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2023863</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2023863</guid><dc:creator><![CDATA[RTTI is evil]]></dc:creator><pubDate>Sun, 20 Feb 2011 18:21:45 GMT</pubDate></item><item><title><![CDATA[Reply to DesignPattern Depandency Injection mit Lazy Initialization on Sun, 20 Feb 2011 18:29:48 GMT]]></title><description><![CDATA[<p>Danke für die Antwort, kannst du mir ein Beispiel bringen welches ähnlich funktioniert wie meine Minilogger-Klasse?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2023868</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2023868</guid><dc:creator><![CDATA[cppneuling2011]]></dc:creator><pubDate>Sun, 20 Feb 2011 18:29:48 GMT</pubDate></item><item><title><![CDATA[Reply to DesignPattern Depandency Injection mit Lazy Initialization on Sun, 20 Feb 2011 18:48:03 GMT]]></title><description><![CDATA[<p>Sorry, in Cpp programmiert man anders als in PHP. Dort ist etwas aehnliches wie <code>instanceof</code> nur sehr selten von Noeten. Meist ist es ein Indikator fuer ein schlechtes Design (auch in PHP). Und warum sollte ich nach dem Typ/Interfac von Logger fragen, wenn ich weiss, dass Logger dieses Interface anbieten muss?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2023881</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2023881</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Sun, 20 Feb 2011 18:48:03 GMT</pubDate></item><item><title><![CDATA[Reply to DesignPattern Depandency Injection mit Lazy Initialization on Sun, 20 Feb 2011 19:00:47 GMT]]></title><description><![CDATA[<p>Ok danke. In PHP ist instanceof halt eine Möglichkeit die Typisierung etwas stärker zu prüfen.</p>
<p>Welche bessere Möglichkeit kennst du denn um in PHP einen Klassentyp zu prüfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2023891</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2023891</guid><dc:creator><![CDATA[cppneuling2011]]></dc:creator><pubDate>Sun, 20 Feb 2011 19:00:47 GMT</pubDate></item><item><title><![CDATA[Reply to DesignPattern Depandency Injection mit Lazy Initialization on Sun, 20 Feb 2011 19:19:19 GMT]]></title><description><![CDATA[<p>Meistens muss man den Typ gar nicht explizit prüfen, da die Typsicherheit in C++ ja schon garantiert, dass Du nicht einfach nen Apfel als Birne verkaufen kannst. Es gibt auch nicht so was wie Object in Java. Wenn Du sicher stellen willst, dass eine Funktion nur Objekte von Klassen eines bestimmten Interfaces nutzt, übergibst Du eben einen Zeiger auf das Interface. Bei der Übergabe wird das entsprechende Objekt übergeben. Erbt dieses nicht vom entsprechenden Interface, gibt es automatisch einen Compilerfehler.</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

class Interface
{
public:
virtual void foo() = 0;
};

class SomeDerived : public Interface
{
public:
virtual void foo() {std::cout &lt;&lt; &quot;Hi!&quot;;}
}

class SomeNotDerived
{
};

void function(Interface* blub)
{
blub-&gt;foo();
}

int main()
{
SomeDerived a;
SomeNotDerived b;
function(a); // Sauber
function(b); // Compilerfehler
return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2023896</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2023896</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Sun, 20 Feb 2011 19:19:19 GMT</pubDate></item><item><title><![CDATA[Reply to DesignPattern Depandency Injection mit Lazy Initialization on Sun, 20 Feb 2011 19:20:49 GMT]]></title><description><![CDATA[<p>Ich verfahre da eher nach &quot;garbage in, garbage out&quot; und setze stattdessen auf Design by Contract.</p>
<blockquote>
<p>Welche bessere Möglichkeit kennst du denn um in PHP einen Klassentyp zu prüfen?</p>
</blockquote>
<p>Das ist eine rhetorische Frage ... ihn nicht pruefen zu muessen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2023897</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2023897</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Sun, 20 Feb 2011 19:20:49 GMT</pubDate></item><item><title><![CDATA[Reply to DesignPattern Depandency Injection mit Lazy Initialization on Sun, 20 Feb 2011 19:21:34 GMT]]></title><description><![CDATA[<p>Ok, und wie funktioniert so eine Überprüfung zur Laufzeit in C++?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2023898</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2023898</guid><dc:creator><![CDATA[cppneuling2011]]></dc:creator><pubDate>Sun, 20 Feb 2011 19:21:34 GMT</pubDate></item><item><title><![CDATA[Reply to DesignPattern Depandency Injection mit Lazy Initialization on Sun, 20 Feb 2011 19:24:07 GMT]]></title><description><![CDATA[<p>Du hast wohl den Unterschied zwischen statisch und dynamisch typisierten Sprachen nicht ganz verstanden ... <a href="http://de.wikipedia.org/wiki/Statische_Typisierung" rel="nofollow">http://de.wikipedia.org/wiki/Statische_Typisierung</a> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2023900</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2023900</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Sun, 20 Feb 2011 19:24:07 GMT</pubDate></item><item><title><![CDATA[Reply to DesignPattern Depandency Injection mit Lazy Initialization on Sun, 20 Feb 2011 19:27:39 GMT]]></title><description><![CDATA[<p>Oh sorry, klar kann ja in C++ so gar nicht funktionieren. Danke, Thread kann geschlossen werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2023905</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2023905</guid><dc:creator><![CDATA[cppneuling2011]]></dc:creator><pubDate>Sun, 20 Feb 2011 19:27:39 GMT</pubDate></item><item><title><![CDATA[Reply to DesignPattern Depandency Injection mit Lazy Initialization on Sun, 20 Feb 2011 23:02:34 GMT]]></title><description><![CDATA[<p>Vermeide RTTI wo möglich.<br />
<a href="http://www.c-plusplus.net/forum/261272-10" rel="nofollow">Warum explizite Typunterscheidungen schlecht sind</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2023995</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2023995</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 20 Feb 2011 23:02:34 GMT</pubDate></item></channel></rss>