Hej Carsten.
Udmærket eksempel, tak.
-Jan
"Carsten" <carjak@wanadoo.dk> skrev i en meddelelse
news:Utp56.13$xq4.13795376@news.mobilixnet.dk...
> I min web server har jeg nogle TResponseWriter nedarvninger, som kan finde
> ud af at give response på hver sin måde. En TISAPIWriter klarer f.eks.
ISAPI
> kald, en TStaticFileWriter klarer html/gif filer og en TScriptWriter
klarer
> (Win)CGI scripts. Hver af disse klasser registrerer sig selv overfor
> webserveren (en TRequestReader klasse), så den ved hvilken en Writer den
> skal kalde hvornår. Lige nu foregår det baseret på den file-extension som
> brugeren ønsker. Er det en html/gif extension så er det
TStaticFileWriter'en
> osv.
> På den måde undgår jeg, at TRequestReader'en *skal* kende alle
> Writer-classes på compile-time. Alternativet til nedenstående pseudo-kode
> var jo at lave en kæmpe case(Extension) of.
>
> Pseudo-kode (kan absolut ikke compileres):
>
> Type
> TWriterClass = Class of TResponseWriter;
>
> TRequestReader.RegisterWriter(Extension : String; CallMe : TWriterClass);
> begin
> CallWhenWriter[Extension] := CallMe;
> end;
>
> TRequestReader.IncommingCall(...)
> var
> Writer : TWriterClass;
> begin
> FindExtensionFromRequest(...);
> Writer := FindWriterFromExtension(...);
> with Writer.Create(....) do Resume;
> end;
>
> Hilsen
>
> Carsten
>
http://www.blueface.com
>
>
> Jan Pe"d"ersen <jan@with_a_d.dk> wrote in message
> news:9E156.5222$%c2.149405@news010.worldonline.dk...
> > Hej.
> >
> > Er der een som med en rimelig god begrundelse el. kode
> > kan redegøre for en effektiv/nyttig brug af class of..
> > Jeg kender udmærket virkemåden, men savner nogle effektive
> > eksempler på brugen.
> >
> > -Jan
> >
> >
>
>