Ahoi,
ich hab mir gerade mal verschiedene IoC implementierungen in PHP (bitexpert/disco) und C# (Ninject) angeschaut. Alle bieten die Möglichkeit eine Klasseninstanz am Ende als Singleton zu nutzen.
In Disco z.B: über Annotation
In C# ist es eine Methode asSingleTon()
Aber das kann doch eigentlich nur falsch sein oder?
Nach meinem Verständnis muss das was ein Singleton ausmacht bereits von der Klasse, die als Singleton nutzbar sein soll, definiert werden und nicht von irgendwelchen anderem Code.
Nach z.B. GoF (Gang of Four)) ist ein Singleton so zu definieren, das sichergestellt ist das es davon scope unabhängig immer nur eine einzige Instanz geben kann.
Das ist ja bereits dadurch nicht erfüllt weil eine neue Instanz der zurück gegebenen Klasse beliebig oft abseits des IoC initialisiert werden kann.
Mir geht es da eigentlich nur um die Benamsung weil ich das irritierend finde.
Singleton ist in der Informatik ja eigentlich ein Muster mit fest definierten Verhalten.
Haltet Ihr das für korrekt/richtig das diese Bezeichnung dafür missbraucht wird?
Oder liegt es einfach nur an schrägen Denken meinerseits und das alles ist eigentlich OK?
ich hab mir gerade mal verschiedene IoC implementierungen in PHP (bitexpert/disco) und C# (Ninject) angeschaut. Alle bieten die Möglichkeit eine Klasseninstanz am Ende als Singleton zu nutzen.
In Disco z.B: über Annotation
PHP-Code:
/**
* @Bean({"singleton"=true})
*/
public function xyz() : SomeObject
{
return new SomeObject();
}
Aber das kann doch eigentlich nur falsch sein oder?
Nach meinem Verständnis muss das was ein Singleton ausmacht bereits von der Klasse, die als Singleton nutzbar sein soll, definiert werden und nicht von irgendwelchen anderem Code.
Nach z.B. GoF (Gang of Four)) ist ein Singleton so zu definieren, das sichergestellt ist das es davon scope unabhängig immer nur eine einzige Instanz geben kann.
Das ist ja bereits dadurch nicht erfüllt weil eine neue Instanz der zurück gegebenen Klasse beliebig oft abseits des IoC initialisiert werden kann.
Mir geht es da eigentlich nur um die Benamsung weil ich das irritierend finde.
Singleton ist in der Informatik ja eigentlich ein Muster mit fest definierten Verhalten.
Haltet Ihr das für korrekt/richtig das diese Bezeichnung dafür missbraucht wird?
Oder liegt es einfach nur an schrägen Denken meinerseits und das alles ist eigentlich OK?
Kommentar