Wenn man die Funktionen im Datamodule hat, kann man z.B. für das Programm unterschiedliche Oberflächen verwenden
Dann stell dir einfach mal vor du würdest das Datenmodul aus einer Konsolenanwendung heraus anwenden.
In diesem Fall merkt man nämlich dass eine Actionlist oder gar ein Actionmanager keine universelle
API darstellt sondern in die Welt der Benutzeroberflächen gehört.
Oder anderst formuliert:
Angenommen man hat eine
VCL-Anwendung und man möchte daraus zusätzlich eine Konsolenanwendung und einen Dienst der nur über
TCP/
IP kommuniziert ableiten.
Man würde also die Businesslogik extrahieren und in einen eigenen Namespace legen und getrennt von den 3 Anwendungarten aufbewahren.
Datenmodule gehören zur Businesslogik (bzw. zur Datenzugriffsschicht).
Aber die Actions, ActionLists und ActionManager müsste man entfernen denn schließlich sind diese Klassen in dem Namespace "
Vcl.ActnList" bzw. "
Vcl.ActnMan".
Man kann auch das
Model-View-Controller Entwurfsmuster heranziehen.
Wohin gehören die ActionLists?
Ich würde sagen weder ins Modell noch in die View sondern ActionLists nehmen die Aufgaben von Controllern wahr.
Die ganze Architektur der
VCL ist so aufgebaut, dass Delphi Steuerelemente gleichzeitig View- und Controller-Aufgaben wahrnehmen.
Ein Delphi Formular vereinigt sowohl View als auch Controller in sich, daher sind Actionlists auf dem Formular am Besten aufgehoben.