Einzelnen Beitrag anzeigen

SebE

Registriert seit: 31. Jul 2004
Ort: Chemnitz
316 Beiträge
 
Delphi 7 Personal
 
#6

AW: Trennung von GUI und Logik, wie geht ihr vor?

  Alt 19. Aug 2011, 17:26
Ich mache das immer der Art:

Delphi-Quellcode:
type
  TAdditionVisualComponent = class
    public:
      procedure resultChangeEvent(result: integer); virtual; abstract;
    end;

type
  TAddition = class
    [...]

    private:
      visualComponent: TAdditionVisualComponent;
    end;

// ---

function TAddition.Addition(Zahl1, Zahl2: Integer): Integer;
begin
[...]

if self.visualComponent <> nil then
  self.visualComponent.resultChangeEvent(Zahl1 + Zahl2);
end;
Konkrete Implementation der visuellen Repräsentation im Presenter/in der View (ich verwende eine abgewandelte Form des MVC):

Delphi-Quellcode:
type
  TAdditionVC = class(TAdditionVisualComponent);
  public:
    procedure resultChangeEvent(result: integer); override;
  end;

// ---

procedure TAdditionVC.resultChangeEvent(result: integer);
begin
  Form1.Edit1.Text = IntToStr(result);
end;
Der Aufruf des ganzen erfolgt aus der GUI über den Controller (falls vorhanden zuvor über den Presenter):
MyController.Add(StrToInt(Edit2.Text), StrToInt(Edit3.Text)); Jetzt kommt es darauf an, wie man den Controller mit den Business-Objekten verbinden möchte.
Der einfachste Fall (der Controller kennt nur ein Objekt):
Delphi-Quellcode:
type
  Controller = class;
    private:
      MyAddition: TAddition;
  end;

// ---

procedure Controller.Add(Zahl1, Zahl2: integer);
begin
  MyAddition.Addition(Zahl1, Zahl2);
end;
MyAddition
Das ist das, was ich aus dem Stehgreif auf die Schnelle zusammentragen kann.
Sebastian
  Mit Zitat antworten Zitat