AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Objekteigenschaft übergeben?

Ein Thema von moelski · begonnen am 30. Nov 2009 · letzter Beitrag vom 7. Dez 2009
 
Alaitoc

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

Re: Objekteigenschaft übergeben?

  Alt 1. Dez 2009, 10:12
Also ich halte das für ziemlich unschön, besonders weil ich halt viel mit Patterns programmiere.

Ich poste hier einfach mal ein Pseudo-MVC Beispiel, welches ich hier schon angedeutet hatte:

Model und View:

Delphi-Quellcode:
Unit ModelView;

interface

type
  TObserver = class;

  TModel = class (TObject)
  public
    procedure Notify;
  end;

  TView = class (TObject)
  public
    procedure Update( Model: TModel); virtual; abstract;
  end;

implementation

uses
  Controller;

procedure TModel.Notify;
begin
  TController.Instance.Notify( Self );
end;
Observeritem:

Delphi-Quellcode:
unit Observeritem;

interface

uses
  ModelView;

type
  TObserverItem = class (TObject)
  private
    FModel: TModel;
    FView: TView;
  public
    property Model: TModel read FModel;
    property View: TView read FView;

    constructor Create(Model: TModel; View: TView);
  end;

implementation

constructor TObserverItem.Create(Model: TModel; View: TView);
begin
  FModel := Model;
  FView := View;
end;

end.
Observerlist:

Delphi-Quellcode:
unit ObserverList;

interface

uses
  ModelView,
  ObserverItem;

type
  TObserverList = class (TObjectlist)
  private
    function GetItems( Index: Integer): TObserverItem;
  public
    function Add( Model: TModel; View: TView): Integer;
    procedure Delete( Index: Integer);
    property Items[ Index: Integer]: TObserverItem read GetItems;
  end;

implementation

function TObserverList.Add( Model: TModel; View: TView): Integer;
begin
  Result := inherited Add( TObserverItem.Create( Model, View ) );
end;

procedure TObserverList.Delete( Index: Integer);
begin
  inherited Delete( Index );
end;

function TObserverList.GetItems( Index: Integer): TObserverItem;
begin
  Result := ( inherited Items[ Index ] ) as TObserverItem;
end;
Den Controller als Singleton kann ich gerade noch nicht posten, dafür fehlt mit atm die Zeit. Werde ich später nachholen, jedoch wird halt im Controller eine ObserverList verwaltet, wo jeweils die Models und Views bekannt gemacht werden. Bei einem Notify von einem Model würde er jedem View sagen das es ein Update ausführen soll und welches Model die Daten beinhaltet. Die Update-Methode des Views definiert man je nach Ansicht, indem man von der Basis-Klasse ableitet.

PS: Kann sein, dass hier noch was fehlt. Aber grundlegend sollte es das soweit sein bis auf den Controller. Schaue später nochmal über alles drüber.

MfG Alaitoc
  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 22:49 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