Du verwendest D2006, so dass ich mir den Hinweis auf das Spring-DI-Framework sparen kann.
Aber natürlich steht Dir mit den Interfaces ein Konzept zur Verfügung, mit dem Du schön modularisieren kannst, ohne Dich mit zirkulären Referenzen plagen zu müssen.
Delphi-Quellcode:
unit uInterfaces
interface
uses
Engine, Manager1;
type
IManager1 =
interface
[Shift+Strg+G]
end;
IEngine =
interface
[Shift+Strg+G]
function GetManager1 : IManager1;
property Manager1: IManager1
read GetManager1;
end;
Delphi-Quellcode:
unit Engine;
interface
implementation
uses
uInterfaces;
type
TEngine =
class(TInterfacedObject, IEngine)
private
FManager1: IManager1;
function GetManager1 : IManager1;
end;
Delphi-Quellcode:
unit Manager1;
interface
implementation
uses
uInterfaces;
type
TManager1 =
class(TInterfacedObject, IManager1)
private
FEngine: IEngine;
protected
public
constructor Create(e: IEngine);
end;