Ich habe bereits einiges zur Trennung vom UI und Logik gegoogelt und gelesen, ohne mir im einzelnen aufzuschreiben wo das war. Darunter war auch eine kernige Aussage, die folgende Bedingungen forderte:
- 1. Die UI darf die konkrete Implementierung der Logik nicht kennen (deshalb nutze ich die abstrakte Klasse TMainIntf als Interfacedefinition)
2. Die UI darf den Controller nicht kennen
3. Die Logik darf weder den Controller noch die UI kennen
4. Der Controller verwaltet alles
Ich stecke jetzt nicht so im Thema drin, bin auch nur interessierter Laie in der Hinsicht (muss altes Programm pflegen, wo sowas sehr selten eingesetzt wird).
Aber so wie ich es verstehe ist die Oberfläche der
VCL sowohl View als auch Controller (durch die Event-Handler: OnClick, OnMouseOver, OnChange...etc.) und es daher keine strikte Trennung in Delphi dafür geben kann.
Schau mal hier, speziell der Punkt Model-View-Presenter weiter unten im Kapitel 8.2.5, vielleicht hilft dir das weiter:
http://openbook.galileocomputing.de/...tel_08_002.htm
1. Die UI darf die konkrete Implementierung der Logik nicht kennen:
Wäre es nicht besser statt einer abstrakten Klasse ein oder mehrere voneinander abgeleitete Interfaces zu nehmen?
Sonst kommt man irgendwann doch noch dazu, in der abstrakten Klasse Code zu implementieren.
Durch ein Interface sagst du nur, was für ein Verhalten die zu erstellende Klasse können muss.
2. Die UI darf den Controller nicht kennen:
Wenn nur der Controller die UI und Logik kennt (aber nicht anderesrum), wie kommen dann Eingaben (Click, Strings aus Edits usw.) vom UI in den Controller?
Eventhandler des Controllers im Objekt-Inspektor den entsprechenden Ereigniss der visuellen Komponente zuweisen?