2010-12-02 6 views
0

Ich habe ein Programm, das verschiedene Objekte behandelt, die ihre eigenen Anweisungen haben (sagen sie ihr eigenes Programm), und von einer Hauptklasse möchte ich diese Programme ausführen. Dann habe ich zwei Möglichkeiten:Einzeln verwendete Klasse vs. "statische Klasse"

  • Eine Klasse InstructionHandler, erstellen eine Instanz davon in meinem Haupt-Klasse und übergeben Anforderungen an diese ein Objekt [Muster Singleton - dank Mark Peters]
  • Eine Klasse InstructionHandler mit nur statische Methoden und nutzen Sie diese in meiner Hauptklasse

Was wäre der gute Weg aus der Sicht eines Software - Design zu gehen?

+2

Ihre erste Methode verwendet das sogenannte "Singleton-Muster" –

Antwort

0

Haben Sie in Betracht gezogen, Interpreter Pattern zu verwenden? Können die Befehlssätze für jedes der Objekte kombiniert werden, um eine Art von Grammatik zu erstellen?

0

Sie sind mit einem Singleton viel besser dran. Wenn Sie (zum Beispiel zum Testen) das Verhalten Ihres Systems ändern wollten, stören statische Methoden. Mit einem Singleton können Sie einfach die betreffende (n) Methode (n) ableiten und überschreiben und dann eine Instanz der Unterklasse anstelle Ihrer regulären Klasseninstanz verwenden. Eine solche Substitution ist mit statischen Methoden nicht möglich.

+0

Können wir nicht Mocks (EasyMock, JMock) zum Testen anstelle von Sub-Classing verwenden? –

+0

Ja. Und ja, einige von ihnen erlauben sogar statische Methoden zu verspotten. Also habe ich den Fall wahrscheinlich überbewertet. Aber warum nicht Ihre Klassen so gestalten, dass diese Werkzeuge nicht für Routine-Manipulationen benötigt werden? –