2016-11-16 8 views
0

Ich habe eine Dienstprogrammklasse, die keine Datenelemente enthält und nur einige Dienste über ihre Methoden bereitstellt. In einem solchen Fall, welcher Ansatz ist besser, erstellen Sie eine Klasse mit allen statischen Methoden oder erstellen Sie eine Klasse mit normalen Methoden und rufen Sie sie auf, indem Sie ein Objekt der Klasse erstellen? Was sind die Vor- und Nachteile der beiden Ansätze?Eine Klasse mit statischen Methoden oder Klasse mit normalen Methoden

+5

Dritte mögliche Option: Verwenden Sie einen 'Namespace' und freie Funktionen. –

+0

Danke für den Kommentar, einen Grund für die Wahl eines der drei Ansätze? – Arun

Antwort

1

Ich denke, die überlegene Wahl ist mit einem namespace und freien Funktionen. Gründe:

  • eine class mit normalen Methoden zu verwenden ist verwirrend, da es instanziiert werden muss, hat aber keinen Staat.

  • Die Verwendung einer class mit nur statischen Methoden ist besser, erfordert jedoch, dass der Benutzer immer den Namen der Klasse angibt.

  • ein namespace und freie Funktionen wird verhindert, dass die Möglichkeit einer Verwechslung/unnötige instantiations, und ermöglicht dem Benutzer auch die namespace Aliasnamens oder using namespace Wiederholungen zu vermeiden verwenden, wenn mehrere Funktionen im gleichen Umfang verwenden. Die namespace kann auch mehrere Dateien umfassen.

1

Wenn Sie keine Datenelemente haben, gibt es keinen Grund, eine Klasse mit Elementmethoden zu verwenden. Sie müssen eine Instanz Ihrer Klasse erstellen, um Ihre Methoden aufzurufen (ein kleiner, aber vermeidbarer Overhead)

Der Aufruf einer statischen Methode einer Klasse generiert keinen Overhead. Das Gleiche gilt für Funktionen in einem Namespace.

Verwandte Themen