@jaenicke
So könnte die Klasse aussehen
Delphi-Quellcode:
unit Entity;
TEntity =
class
end;
TEntityClass =
class of TEntity;
TEntityFactory =
class
class procedure RegisterClass(
const AName :
string; AClass : TEntityClass );
overload;
class procedure RegisterClass( AClass : TEntityClass );
overload;
class function Construct(
const AName :
string ) : TEntity;
// oder mit Generics
class function Construct<T : TEntityClass>(
const AName :
string ) : T;
end;
das Registrieren dann wie schon erwähnt
Delphi-Quellcode:
unit Baum;
uses
Entity;
TBaum =
class( TEntity )
end;
TBusch =
class( TEntity )
end;
initialization
TEntityFactory.RegisterClass( '
Baum', TBaum );
TEntityFactory.RegisterClass( '
Busch', TBusch );
end.
und erzeugen dann mit
Delphi-Quellcode:
var
LBaum : TEntity;
LBusch : TEntity;
LBaum := TEntityFactory.Construct( 'Baum' );
LBusch := TEntityFactory.Construct( 'Busch' );
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)