Wie oft Objekt einer Klasse erzeugen
-
Hallo,
bin Anfänger und hab da mal ne Frage:
Nehmen wir an, ich habe eine Klasse "Mathematik" geschrieben mit
verschiedenen Methoden zum Berechnen von irgendetwas. Die Klasse
soll in einem WinForms-Programm verwendet werden.Was ist besser:
- Beim Start des Programms eine Instanz der Klasse erzeugen und dann
immer darauf zugreifenoder
- Bei jeder Aktion/Event, die eine Methode benötigt, ein neues Objekt
der Klasse erzeugen?
-
Wenn du eh nur die Methoden brauchst und keine Interaktion mit Objekten würde ich es als Statische Klasse machen und diese benutzen.
-
Die Frage ist meines Erachtens schwer zu beantworten.
Es kommt immer darauf an, wie häufig Du die Klasse verwendest. Folgende Fragen sollte man sich stellen:Lohnt es sich, die Funktionen/Methoden während der gesamten Laufzeit der Applikation im Speicher zu halten (statisch)? Also greifst Du oft genug auf die Funktionen zu, als dass Du die Klasse im Speicher halten willst? Wieviel Speicher reservierst Du denn, wieviele Objekte hältst Du, ergo wieviel Speicher wird während der Laufzeit nur für diese Klasse reserviert?
Oder hält sich der Zugriff insgesamt doch in Grenzen? Dann würde ich die Klasse definitiv instanziieren...
Ist auch ein Stückweit Philosophie... Wenn man jede Klasse bei jeder Kleinigkeit statisch hält, ist das zwar bequem, entspricht aber nicht unbedingt einer bedachten und vorausschauenden Entwicklung...
Grüße
Stephan
-
C-Develop schrieb:
Lohnt es sich, die Funktionen/Methoden während der gesamten Laufzeit der Applikation im Speicher zu halten (statisch)?
hä?
-
passiert das nicht sowieso die ganze zeit?
-
C-Develop schrieb:
Die Frage ist meines Erachtens schwer zu beantworten.
Es kommt immer darauf an, wie häufig Du die Klasse verwendest. Folgende Fragen sollte man sich stellen:Lohnt es sich, die Funktionen/Methoden während der gesamten Laufzeit der Applikation im Speicher zu halten (statisch)? Also greifst Du oft genug auf die Funktionen zu, als dass Du die Klasse im Speicher halten willst? Wieviel Speicher reservierst Du denn, wieviele Objekte hältst Du, ergo wieviel Speicher wird während der Laufzeit nur für diese Klasse reserviert?
Oder hält sich der Zugriff insgesamt doch in Grenzen? Dann würde ich die Klasse definitiv instanziieren...
Ist auch ein Stückweit Philosophie... Wenn man jede Klasse bei jeder Kleinigkeit statisch hält, ist das zwar bequem, entspricht aber nicht unbedingt einer bedachten und vorausschauenden Entwicklung...
Grüße
StephanAha, du machst dir also jedesmal bevor du entwickelst Gedanken über den Speicherverbrauch? Optimieren kann/sollte man erst dann wenn es wirklich eng wird.
-
Sebastian Däuser schrieb:
Nehmen wir an, ich habe eine Klasse "Mathematik" geschrieben mit
verschiedenen Methoden zum Berechnen von irgendetwas.Um was genau handelt es sich denn?
Aus Faulheit verwende ich gelegentlich auch statische Klassen und falle damit immer wieder auf die Nase. Selbst wenn ich vorher sicher bin, keine Objekte zu benötigen, kommt irgendwann ein absurder Kundenwunsch und dann ist erstmal refaktoring angesagt.
Andererseits ist Mathe wirklich hart an der Grenze. Sowas muss nämlich auch nicht sein:
Mathe m = new Mathe();
m.Sin(m.Pi);Also erläuter dein Vorhaben vielleicht etwas näher.