Einzelnen Beitrag anzeigen

Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Viele Objekttypen handlen?

  Alt 1. Jul 2005, 18:23
Hi,

Ich hoff mal ich hab auch verstanden worum es geht . Ich würde es so lösen:

Delphi-Quellcode:
type
  TDeviceType = (Device1, Device2);

  TDeviceClass = class of TBasicDevice;

  TBasicDevice = class(TPersistent)
  public
   class function GetDeviceClass(DeviceType: TDeviceType): TDeviceClass;
  end;

  TDevice1 = class(TBasicDevice);
   {...}
  TDevice2 = class(TBasicDevice);
   {...}

implementation

{...}

{ TBasicDevice }

class function TBasicDevice.GetDeviceClass(
  DeviceType: TDeviceType): TDeviceClass;
begin
 case DeviceType of
  Device1: Result := TDevice1;
  Device2: Result := TDevice2;
  else
   Result := nil;
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var DeviceClass: TDeviceClass;
    SomeDevice: TBasicDevice;
begin
 DeviceClass := TBasicDevice.GetDeviceClass(Device1);
 If DeviceClass <> nil then
  SomeDevice := DeviceClass.Create;
end;

{...}
Wenn du eine neuen Nachkommen hinzufügst, muss die GetDeviceClass Methode aktualisiert werden, aber ich sehe auch keinen Weg, das zu vermeiden, weil du eine Geräte-Klasse aufgrund einer Information (in deinem Pseudocode das "Gerät") identifizieren willst, die selbst keine Klasse ist.

Edit: rethorische Verbrechen entfernt.
Dani H.
At Least I Can Say I Tried
  Mit Zitat antworten Zitat