J
Christian211 schrieb:
Es geht nicht darum eine Klasse wiederzuverwenden, sondern auf Daten einer anderen schon instanzierten Klasse zuzugreifen. Keine Wiederverwendung einer Klasse.
Du darfst nicht nur den Datenfluss sondern auch die Funktionalität betrachten!
Es geht um Abläufe... Klassen sollten immer spezialisten für bestimmte Abläufe sein. Diese Abläufe kann man ggf. weiterverwenden.
Nehmen wir ein losgelöstes Beispiel: Ich hab eine Klasse die ist darauf spezialisiert, mit dem COM-Port umzugehen. Das kann sie gut, und das macht sie gerne. Wenn sie jetzt aber die Daten immer selber aus dem Formular holen muss, dann musst du jedesmal die Klasse anfassen, oder das Formular in jeder Anwendung in der du mit dem COM-Port arbeiten willst integrieren. (macht beides keinen Spass)
Deshalb designt man in dem Fall die COM-Port klasse so, dass die Daten abgeholt werden und hingetragen werden. Das ermöglicht es, die COM-Port Klasse ohne Kenntnisse der umliegenden Applikation in beliebigen Anwendungen zu übernehmen.
Hier innerhalb eines Programmes von einer Klasse zur anderen mittels Timer oder gar Messages zu arbeiten - Sorry das wäre in meinen Augen übertrieben.
Was glaubst du, macht die VCL intern? Bzw. Was glaubst du, machen Programme wenn sie WinAPI basierend sind? Messages sind bei weitem nicht nur für Interprozesskommunikation gedacht. Messages sind zum Beispiel der einzige effiziente Weg (neben den Callbacks) ein eventgetriebenes System aufzubauen. Und alle GUI sind Eventgetrieben.
Beide Systeme (Callback und WM) haben vor und nachteile. Mal ist das Eine effizient, mal das andere.