hallo leute,
ich bastele gerade an einer anwendungsarchitektur, die mir erlaubt, zur laufzeit ansichten, sog. "Views" aus DLL´s in mein Hauptfenster der Anwendung zu laden, das ganze folgt so ziemlich dem prinzip des cfd & microkernels.
Eine View könnte dabei "Projektmanagement" sein, eine andere "Kontakte".
Dabei ergibt sich natürlich die notwendigkeit, dass eine view manchmal fähigkeiten einer anderen view abrufen können muss, z.b.
zur lösung dieses problems hätte ich jetzt auf einen Mediator ("ViewBroker") zurückgegriffen, der sozusagen die veröffentlichten funktionen aller Views kennt und z.B. in folgender weise zum abruf anbietet:
class Contact : IView
{
...
private void NewContract()
{
ViewBroker.DoAction("Projekte", 1, this.ContactID)
}
...
}
wobei die View Contact ja aber immer noch "wissen" muss, dass für Projekte der ActionCode 1 bedeutet "Neuen Vertrag für nachstehende ContactID", ActionCode 2 "TuWasAnderes", etc.
wird dadurch das prinzip der losen kopplung nicht wieder verletzt?
oder ist mediator eh der falsche ansatz?
was meint ihr
d.i.v.
ron
also,
mein cleverer azubi ist folgerichtig auf delegaten gesprungen, und das wäre ein ausreichender lösungsansatz:
wenn der ViewBroker die Methoden eines Delegaten implementiert, der in der Schnitstelle IView deklariert ist, z.B.
delegate void ViewAction(object sender, int actionCode);
ist ein zusätzlicher Vermittler nicht mehr nötig.
Vielleicht werde ich später mal ein passendes Beispiel einer solchen Implementierung hier ins Forum stellen.
Gruß
Ron