Michael Zedeler wrote:
> Jakob Moll wrote:
>
>> Hej NG
>>
>> Jeg sidder med et projekt hvor jeg skal gemme en masse data i nogle
>> datastrukturer.
>>
>> Oprindeligt have jeg tænkt at lave én klasse til at holde data (denne
>> klasse vil blive brugt mange gange - og svarer lidt til C's struct) og
>> lave en anden klasse til at manipulere disse data (lægge alle
>> funktioner mm. her).
>>
>> Rent (OO)design mæssigt ville jeg dog hellere have funktionerne
>> liggende i den første klasse, og helt undgå klasse to (med funktionerne).
>
>
> Det kan være at du egentlig har tænkt i retning af en slags
> flyweight-konstruktion. Fordelene ved den er at man undgår meget af det
> overhead, der ligger i at instatiere mange klasser.
>
Design mønstre er en dejlig ting, da de hjælper med at gøre kode
standardiseret, pænt, overskueligt og nemt at snakke om. Dog skal man
være lidt opmærksom på at bruge dem rigtig.
Der har fornyeligt været afholdt JAOO (
www.jaoo.dk) i aarhus hvor der
blev afholdt et foredrag om "Java Technology Performance Myths Exposed"
givet af Ivan Posva og Gil Tene. De fremhævede blandt andet at myten on
pooling af objekter kun var gældende ved store og komplekse objekter.
Dette skyldes at forskellige implementeringer af JVMer idag bliver
optimeret til netop at håndtere et stort antal instantieringer hurtigt.
Det betyder dog _ikke_ Flyweight mønsteret _ikke_ er godt, men at man
skal passe på at man forstår at bruge det rigtig. Man risikere at det
giver den modsatte effekt.
> Prøv at se her:
>
http://cs.colgate.edu/faculty/nevison/cs303web/notes/TheFlyWeightPattern.ppt
>
>
>
http://www.javaworld.com/javaworld/jw-07-2003/jw-0725-designpatterns.html
>
>> Mit spørgsmål går på om java optimering kan finde ud af at "gemme"
>> funktionerne for sig så disse ikke bliver oprettet(?) for hver instans.
>
>
> Java gemmer kun selve koden til hver klasse ét sted.
>
>> Hvad vil være mest effektivt ?
>
>
> Det kommer an på din situation. Hvis du har brug for en masse ens
> objekter, der blot gemmer på forskellige stumper data, er
> flyweight-mønsteret muligvis det rigtige.
>
> Mvh. Michael.
mvh Claus Thrane