AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Konflikt mit LoD, bei MVC + Factory + Command Pattern
Thema durchsuchen
Ansicht
Themen-Optionen

Konflikt mit LoD, bei MVC + Factory + Command Pattern

Ein Thema von Alaitoc · begonnen am 28. Sep 2009 · letzter Beitrag vom 28. Sep 2009
 
Alaitoc

Registriert seit: 24. Okt 2008
263 Beiträge
 
Delphi 7 Enterprise
 
#1

Konflikt mit LoD, bei MVC + Factory + Command Pattern

  Alt 28. Sep 2009, 08:24
Tag zusammen,
ich habe ein Problem mit dem LoD, also Law of Demeter ( siehe Wikipedia ).

Situation:
Ich benutze ein MVC, um die Daten von der visuellen Umgebung zu trennen und natürlich um mehrere visuelle Darstellungen für jeden Datensatz zu ermöglichen und dabei auch sicherzustellen das überall die Änderungen vorgenommen werden. Die Factory erstellt dabei für einen Handler die unterschiedlichen Models oder Views, dieser meldet sie dann an das Control an. Die Factory weist ebenso über Properties dem Model konkrete Befehle zu, falls diese für das Model benötigt werden.

So nun haben die Views jeweils noch eine Referenz auf das Model und würden nun bei einem Click auf z.b. einen Add-Button, überprüfen ob ihre Referenz einen Add-Befehl besitzt. Also in etwa so:

Delphi-Quellcode:
procedure TView.Add( Sender: TObject );
begin
  if Assigned( Model ) then
  begin
    if Assigned( Model.AddBefehl ) then
    begin
      Model.AddBefehl.Execute( Self ); // Verstoß gegen das LoD
    end;
  end;
end;
Problem hierbei ist, dass ich gegen das LoD verstoße und ich mir noch nicht sicher bin wie ich das lösen soll...
Theorethisch könnte ich im Konstruktur des Models die Befehle übergeben und dann per Hilfsprozedur auf den Befehl zugreifen, jedoch würde das den Konstruktor sprengen. Momentan weise ich die Befehle halt noch über Properties in der Factory zu und direkt im Konstruktor des Models kann ich sie auch nicht erstellen, da das Model nur die allgemeine Befehlsklasse kennen darf.

Hier nochmal ein Beispielauszug aus der Factory:

Delphi-Quellcode:
class function Factory.CreateModel( Handler: THandler ): TModel;
var
  Model: TModel;
begin
  // Erzeuge Model
  Model := TKonkretModel.Create;
  Model.AddBefehl := TAddBefehl.Create( Handler );
  // Rückgabe
  result := Model;
end;
Vll. habt ihr ja ne Idee

MfG Alaitoc

Edit: Unten noch ein Beispiel zum Add-Befehl
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz