Delphi-Quellcode:
AutoListe: TList<TAuto>;
type
TAuto = class
Test1: TMotorTest1;
Test2: TMotorTest2;
end;
IMotor = interface
function GetSchraubenAnzahl: Integer;
procedure SetSchraubenAnzahl(const Value: Integer);
procedure Brumm;
property SchraubenAnzahl: Integer read GetSchraubenAnzahl write
end;
TMotor = class(TInterfacedObject, IMotor)
function GetSchraubenAnzahl: Integer;
procedure SetSchraubenAnzahl(const Value: Integer);
FSchraubenAnzahl: Integer;
procedure Brumm;
property SchraubenAnzahl: Integer read GetSchraubenAnzahl write SetSchraubenAnzahl;
end;
TMotorTest1 = class
Motor: IMotor;
constructor Create;
procedure Motortest;
end;
TMotorTest2 = class
Motor: IMotor;
constructor Create;
procedure Motortest;
end;
TAuto = class
public
Test1: TMotorTest1;
Test2: TMotorTest2;
end;
implementation
constructor TMotorTest1.Create;
begin
Motor := ServiceLocator.GetService<IMotor>;
end;
constructor TMotorTest2.Create;
begin
Motor := ServiceLocator.GetService<IMotor>;
end;
initialization
GlobalContainer.RegisterComponent<TMotor>.Implements<IMotor>.AsSingleton;
So, ich hoffe der Code ist richtig und verständlich.
Die Schraubenanzahlin Test1 und Test2 sind immer dieselben, was auch richtig ist, da es um denselben Motor geht.
Wenn jetzt aber das Auto in der Liste ist, dann ist die Schraubenanzahl bei jedem Auto immer noch dieselbe, aber jedes Auto hat einen anderen Motor mit einer anderen Schraubenanzahl.
Achtung: Bin kein Informatiker sondern komme vom Bau.