/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Ang. Factory
Fra : Klaus Petersen


Dato : 09-07-03 20:31

Hej ng.

Et lille struktur relateret spørgsmål.

Jeg har en factory, der skaber instanser af objekterne i mit system. Jeg vil
gerne noget tilsvarende en factory, der sørger for at nedlægge objekterne
igen.

Hvis det ikke er min factory, der skal gøre det, hvad er det så?

Klaus.



 
 
Jakop Nielsen (09-07-2003)
Kommentar
Fra : Jakop Nielsen


Dato : 09-07-03 20:40

> Jeg har en factory, der skaber instanser af objekterne i mit system. Jeg
vil
> gerne noget tilsvarende en factory, der sørger for at nedlægge objekterne
> igen.
>
> Hvis det ikke er min factory, der skal gøre det, hvad er det så?

Objekternes egne destructorer...? Har du behov for at holde styr på noget
særligt i forbindelse med nedlægning?
En factory bruger man jo for at ikke binde ens kode til konkrete klasser men
til interfaces.. så kan du ændre klassen, hvilket du sikkert udmærket ved,
men i den forbindelse hvad forhindrer så at du bare bruger alm destructor?



Klaus Petersen (09-07-2003)
Kommentar
Fra : Klaus Petersen


Dato : 09-07-03 20:50


> Objekternes egne destructorer...? Har du behov for at holde styr på noget
> særligt i forbindelse med nedlægning?

At alt bliver nedlagt. Da det er op til brugeren af systemet at skabe
objekterne, vil et vilkårligt antal objekter blive skabt.

Jeg vil gerne lade mit system tage ansvaret for at nedlægge objekterne for
at sikre, at alt bliver nedlagt.

> En factory bruger man jo for at ikke binde ens kode til konkrete klasser
men
> til interfaces..

Eller for at fritage brugeren af systemet for den komplicerede process i at
skabe det korrekt, hvilket er årsagen i mit tilfælde.

> så kan du ændre klassen, hvilket du sikkert udmærket ved,
> men i den forbindelse hvad forhindrer så at du bare bruger alm destructor?

Det vil jeg også gøre, men allerede nævnt, vil jeg gerne have systemet til
at styre nedlægningen, da den, som skabelsen, også er kompliceret.

Jeg er bare i tvivl om, hvorvidt min factory må, hvis det skal være
pricippelt korrekt, tage sig af den styring.



Rasmus Christian Kaa~ (10-07-2003)
Kommentar
Fra : Rasmus Christian Kaa~


Dato : 10-07-03 07:27

> Det vil jeg også gøre, men allerede nævnt, vil jeg gerne have systemet til
> at styre nedlægningen, da den, som skabelsen, også er kompliceret.

Hvordan fortæller du dit eventuelle de-factory at du vil nedlægge instanser
i systemet?



Klaus Petersen (10-07-2003)
Kommentar
Fra : Klaus Petersen


Dato : 10-07-03 11:11

> Hvordan fortæller du dit eventuelle de-factory at du vil nedlægge
instanser
> i systemet?

Når brugeren kalder Destroy nedlægges hele systemet.

Men der vil også komme metoder i funktionslaget, der kan nedlægge enkelte
objekter i systemet.

Det skal egentlig lige siges, at det jeg laver er ikke en færdig applikation
med gui o.s.v., men et grafisk system, som en programmør kan integrere og
benytte sig af i sit vc++ projekt via. en lib og en header.




Peer (09-07-2003)
Kommentar
Fra : Peer


Dato : 09-07-03 23:06

"Klaus Petersen" <ng@spectual.ra.bnaa.dk> skrev i en meddelelse
news:behqhf$bbd$1@sunsite.dk...
> Hej ng.
>
> Et lille struktur relateret spørgsmål.
>
> Jeg har en factory, der skaber instanser af objekterne i mit system. Jeg
vil
> gerne noget tilsvarende en factory, der sørger for at nedlægge objekterne
> igen.
>
> Hvis det ikke er min factory, der skal gøre det, hvad er det så?

Du kunne eksempelvis anvende smart-pointers...

Tit er factory en singleton, og jeg formoder der er en stribe adaptors bag
ved din factory... - og du vil isolere skjule en kompleks skabelse af
objekter!?



Klaus Petersen (10-07-2003)
Kommentar
Fra : Klaus Petersen


Dato : 10-07-03 10:54

> Du kunne eksempelvis anvende smart-pointers...

Hvad er det nu lige det er...?

> Tit er factory en singleton, og jeg formoder der er en stribe adaptors bag
> ved din factory... - og du vil isolere skjule en kompleks skabelse af
> objekter!?

Ja - jeg vil simplificere brugerens rolle i skabelsen af system ved at han
kan skabe det hele ved et kald til Instance () på min factory.

Tilsvarende vil jeg lave en Destroy (), der nedlægger alle objekter i system
i den rigtige rækkefølge.

For det kan lade sig gøre, btw, skal mit funktionslag lade min factory skabe
objekterne den skal bruge, som så registrerer dem og deres rækkefølge.



Jakop Nielsen (10-07-2003)
Kommentar
Fra : Jakop Nielsen


Dato : 10-07-03 12:17

> > Du kunne eksempelvis anvende smart-pointers...
> Hvad er det nu lige det er...?

auto_ptr er en template pointerklasse som frigiver pointer-data når den går
ud af scope. Det kan ofte forhindre leaks, da man ikke glemmer en pointer og
ikke kan delete mem bagefter.

Sådan som du har beskrevet dit system nu, så tror jeg nu ikke det er hvad du
har brug for. Du har jo tilsyneladende også allerede løsningen på dit
problem hvis du lader din factory slette dine objekter. Om det så helt
præcis kan betegnes som et factory pattern, synes jeg du skal springe op og
falde ned af igen (eller noget i den stil) for løsningen er lige elegant
uanset.

Personligt synes jeg det giver fin mening at factory sørgrer for
nedlægningen af dine objekter, når det er vigtigt hvilken rækkefølge de
slettes i, og factory i forvejen er den eneste der ved hvad der er skabt og
i hvilken rækkefølge.



klaus (10-07-2003)
Kommentar
Fra : klaus


Dato : 10-07-03 12:52


"Klaus Petersen" <ng@spectual.ra.bnaa.dk> wrote in message
news:bejd3h$vg$1@sunsite.dk...
> > Du kunne eksempelvis anvende smart-pointers...
>
> Hvad er det nu lige det er...?
>
Her er lidt om hvad smart pointers er for noget - det er en hel del mere end
std:auto_ptr
http://boost.org/libs/smart_ptr/smart_ptr.htm

/Klaus



Peer Jensen (11-07-2003)
Kommentar
Fra : Peer Jensen


Dato : 11-07-03 19:33

"Klaus Petersen" <ng@spectual.ra.bnaa.dk> skrev i en meddelelse
news:bejd3h$vg$1@sunsite.dk...
> > Du kunne eksempelvis anvende smart-pointers...
> Hvad er det nu lige det er...?

Populært: Pointere der kan slettet sig selv (der er givet en udemærket
forklaring)

> > Tit er factory en singleton, og jeg formoder der er en stribe adaptors
bag
> > ved din factory... - og du vil isolere skjule en kompleks skabelse af
> > objekter!?
>
> Ja - jeg vil simplificere brugerens rolle i skabelsen af system ved at han
> kan skabe det hele ved et kald til Instance () på min factory.
>
> Tilsvarende vil jeg lave en Destroy (), der nedlægger alle objekter i
system
> i den rigtige rækkefølge.
>
> For det kan lade sig gøre, btw, skal mit funktionslag lade min factory
skabe
> objekterne den skal bruge, som så registrerer dem og deres rækkefølge.

Tjae, lave en liste af typeløse pointere (pointere til adaptore) og og slet
dem vha. Destroy() eller hvad jeg vil foretrække: den normale destructor til
din factory

Jeg mindes at have set en udemærket implementering af Factory-mønstret på
www.codeguru.com... - prøv at kigge der hvis du mangler inspiration.

--
Mvh
Peer

It's not a bug... - it's a feature (Citat: M$)



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste