27. februar 2005 - 00:04 Der er 18 kommentarer og
1 løsning

metodekald i den forkerte retning

hej...

hvis man nu har følgende klasser:

  A-B-C-D-E-F
    |
    BF

hvor A instantierer B, osv.. B instantierer desuden BF, der er en JFrame

Findes der så en smart måde hvorpå man kan lave et metodekald fra F til BF uden at have "this" referencer hele vejen fra F til BF, når D, E, og F samtidig skal serialiseres???
Avatar billede arne_v Ekspert
27. februar 2005 - 00:12 #1
Enten referencer eller en registrering i static/singleton.

Og jeg kan ikke gennemskue hvad det betyder for serialisering.
Avatar billede mikkelbm Nybegynder
27. februar 2005 - 00:13 #2
Du skal ha' fastlagt et ordentligt design!

Man går normalt ud fra en lagdeling der er som følgende:


GUI - lag (Alt det grafiske)
Business - lag (Programmets logik)
Data - lag (Som navnet antyder - behandler data. Kan f.eks. være databasekald)


Og kommunikationen går kun nedad.

Hvis der er behov for at GUI'en til tider skal have informationer fra Business-laget, er det pæneste helt klart at bruge observer pattern:

http://www.javaworld.com/javaworld/javaqa/2001-05/04-qa-0525-observer.html

Med en observer laver man ikke for store bindinger, og man kan på den måde få lavet genbrugelig kode.
27. februar 2005 - 00:20 #3
observerPattern lyder fornuftigt..smid et svar...tak

P.S. mit prg ér opbygget efter et ordentlig design, det er netop det jeg ikke vil ødelægge
Avatar billede mikkelbm Nybegynder
27. februar 2005 - 00:21 #4
Okay - det lød bare i mine øre som om du vil smide gui-referencer med ned i business laget :)
Avatar billede arne_v Ekspert
27. februar 2005 - 14:47 #5
Strengt taget flytter observer pattern også en reference hele vejen ned.

Bare med en register metode fremfor i constructor.
Avatar billede mikkelbm Nybegynder
27. februar 2005 - 17:11 #6
Ja, du kan ikke undgå en reference, men med observer pattern får man lavet et abstraktionsniveau, som jeg personligt mener er værd at foretrække :)
Avatar billede mikkelbm Nybegynder
27. februar 2005 - 17:13 #7
Man kan selvfølgelig opnå det abstraktionsniveau på flere måder, men fremgangsmåden i observerpattern synes jeg giver et godt indblik i hvordan det kan gøres.
27. februar 2005 - 18:12 #8
hej Arne...du siger observer pattern også en reference hele vejen ned.... Mener du så den "rigtige" retning. i så fald ikke...vil det påvirke hvor mange klasser jeg skal Serialiserer?
Avatar billede mikkelbm Nybegynder
27. februar 2005 - 18:16 #9
Klasser der skal igennem en stream skal serialiseres. Hvis ens klasser nedarver fra et interface, kan man nøjes med at lade interfacet implementere/extende Serializable.
27. februar 2005 - 18:22 #10
Jeg forstår dig ikke helt helt , når du skriver "igennem en Stream"..

Det jeg har gjort er udelukkende at Serialisere mine DataKlasser. Jeg har så tidligere lavet en "Dårlig Design" reference fra Data gennem Business til Gui klasserne, hvilket så betød at jeg var nød til Serialiserer samtlige klasser, der var i berøring med  referencen. 

Det er det jeg mente med spørgsmålet før...er jeg nød til at Serialisere alle klasserne igen, hvis laver laver en skidt reference, i observer Pattern...eller går denne reference den rigtige vej
Avatar billede mikkelbm Nybegynder
27. februar 2005 - 18:28 #11
Hmmm... og nu forstår jeg ikke dig!?

Man serialiserer sine klasser, hvis de skal sendes over netværk, gemmes på disk eller andre ting der gør, at de skal igennem en stream.

Jeg er ikke sikker på, at jeg er helt med på hvad du mener?
Avatar billede mikkelbm Nybegynder
27. februar 2005 - 18:29 #12
Uanset hvordan du smider referencer frem og tilbage i dit program, er det kun de klasser der (og nu siger jeg det igen :) skal igennem en stream der skal implementere Serializable.
27. februar 2005 - 18:33 #13
Ja..den er fin.

Men jeg får altså compilerfejl, der fortæller mig at jeg skal Serialiserer samtlige klasser, der er i berøring med referencen.
Avatar billede mikkelbm Nybegynder
27. februar 2005 - 18:39 #14
Compilerfejl?

Hmmm... Må vi ikke se den fejl?
27. februar 2005 - 18:39 #15
hej mikkelbm...jeg så ikke din kommentar 18:28:14

I mellem min business klasse og DataKlasserne har jeg en såkaldt Dataklasse der i konstruktøren loader mine data ind fra disk. og en metode der gemmer mine data.

Dvs rent billedmæssigt...alle klasser til højre for denne Dataklasse bliver Serialiseret.
Men jeg forstår hvad du mener med "igennem en strem" nu.. ;)
Avatar billede mikkelbm Nybegynder
27. februar 2005 - 18:45 #16
Okay - så er jeg også med :)

og til dit spørgsmål : "vil det påvirke hvor mange klasser jeg skal Serialiserer?"

Så er svaret nej.
Avatar billede arne_v Ekspert
27. februar 2005 - 19:46 #17
Øh.

Hvis objBF har registereret sig hos objF, så vil den vel også blive serialiseret
med objF ?
27. februar 2005 - 19:47 #18
det lyder godt...tak for hjælpen
Avatar billede mikkelbm Nybegynder
27. februar 2005 - 20:04 #19
>>Arne

Ja, det scenarie har du ret i. Men det er svært at forudse hvad vej hans kode går.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester