Es gibt eine zentrale Instanze "Waschsalon" die für die Anwendung "Waschmaschinen" bereitstellt.
Der "Waschsalon" bekommt seine "Waschmaschinen" von der "HardwareAnsteuerungFactory", davon kann es aber mehrere geben.
Eine für PCI, USB, WLAN oer was uns die Zukunft noch so alles bringt.
Eventuell werden diese auch erst zur Laufzeit der Anwendung per
DLL eingebunden(z.B. eine
DLL je Hardwaretyp).
Der "Waschsalon" braucht nicht zu wissen, woher die "Waschmaschinen" kommen.
Deshalb ist es sinnvoll, das jede "HardwareAnsteuerungFactory" ihre "Waschmaschinen" erzeugt und beim "Waschsalon" registriert.
Delphi-Quellcode:
IWaschsalon = interface
['{240F248A-E379-44B3-ADBA-B08B3DE26567}']
function GibtWaschmaschineMitDerNummer(WaschmaschinenNummer : Integer) : IWaschmaschine;
function Count: Integer; // Anzahl der registrierten Maschinen
function GetItem(AIndex: Integer): IWaschmaschine;
procedure Register(AWaschmaschine: IWaschmaschine); // Maschine hinzufügen
end;
THardwareAnsteuerungFactory.RegisterWaschmaschinen(AWaschsalon: IWaschsalon);
var
Waschmaschine: TWaschmaschine;
begin
for i := 0 to FItems.Count - 1 do
begin
Waschmaschine := TWaschmaschine.Create(FItems[i]);
AWaschsalon.Register(Waschmaschine);
end;
end;