Re: Factory und Interface zusammenpacken?



Christian Franzen schrieb:
Ich grubbel gerade an dem Klassendesign für eine Configuration Klasse.
Bisher habe ich es so gemacht dass ich ein Interface habe, dass nur die
Methoden getValue() und setValue() zur Verfügung stellt und von diesem hab
ich dann konkrete Klassen implementiert die entweder in einer DB, XML-Datei
oder INI-Datei speichern. Diese Implemntierungs-Klassen sind alle Singeltons
(das dürfe aber eigentlich hier irrelevant sein). Jetzt habe ich eine
weitere Klasse, eine Factory-Method-Klasse, über die ich jetzt eine der
Implementierungen instanzieren kann.
Das ganze ist zwar so schonmal recht sauber und sehr flexibel, das mit der
Factory-Klasse gefällt mir aber noch nicht so recht, weil nicht sofort
ersichtlich ist, wie man jetzt eigentlich eine Instanz erzeugen kann.
Deshalb habe ich mir überlegt es wäre ja möglich aus dem Interface eine
abstrakte Klasse zu machen und dann diese Klasse als "Interface" und als
Factory zu benutzen. Jetzt überlege ich ob mir dadurch irgendwelche
Nachteile oder Problemem entstehen könnten. Was meint ihr?

Dein Problem ist, dass du eine einheitliche Struktur brauchst, um die Singleton Instanzen zu erzeugen, wenn ich das richtig verstanden habe, oder?

Wie wäre es einfach mit einem Interface für Singletons allgemein. Auf diese Weise ist sichergestellt, dass jede Singleton Klasse die selbe Methode besitzt, über die man die Objektreferenz bekommt.

(Da ich weiß, dass die implementierende Sprache bei dir PHP ist, nehm ich mal das Beispiel in der PHP Syntax)

interface Singleton
{
public static function getInstance();
}

Und deine verschiedenen Konfigurationsklassen bekommen so eine einheitliches Interface:

class DBConfig implements Config, Singleton

Im Übrigen muss denn jede Konfigurationsklasse ein Singleton sein? Wenn ja solltest das auf jeden Fall über die Schnittstellenableitung machen:

interface Config extends Singleton
{
public function setValue($key, $value);
public function getValue($key);
}

Und bei deinen Klassen dann:
class DBConfig implements Config

Hoffe ich habe dein Problem auch richtig verstanden, ist nicht so deutlich heraus gekommen, was du eigentlich wolltest. :)

--
Mit freundlichen Grüßen,
Christoph Herrmann

http://dragonprojects.de/
.



Relevant Pages

  • Re: .NET Remoting - ich bin doch nicht blöd ?
    ... Du meinst vermutlich eine Instanz der Klasse. ... Singleton oder Singlecall verfahren wird, ... Implementiere das Interface in einer privaten Klasse ...
    (microsoft.public.de.german.entwickler.dotnet.csharp)
  • Re: Singleton
    ... hide the singleton class wholesale in the implementation section of the ... The interface is of course easily replaced with an abstract class: ... property MyFirstProperty: Integer read GetMyFirstProperty write ... procedure MyFirstProcedure; virtual; abstract; ...
    (borland.public.delphi.non-technical)
  • Re: Windows Service in VB
    ... Your service needs to expose an interface via .Net remoting. ... and register the public class as a well-known singleton. ... You also need to create a WinForms app that can be run by logged-in users. ... if your client app just wants to call methods on the service's remoted ...
    (microsoft.public.dotnet.languages.vb)
  • Re: Singleton & Self := in constructor
    ... > I want to enforce singleton behavior in my TObject derived ... > The basic idea is that clients can call the Constructor any ... But it is much simpler to just use an interface ...
    (borland.public.delphi.language.objectpascal)
  • Re: Singleton
    ... I don't usually go to a string factory or a list factory to ... If you have an abstract DOM interface, for example, and the implementation ... To me it's very clear to go to the DomFactory or singleton ... As mentioned in my posting you unit test a class separate from the ...
    (comp.object)