Article View: be.comp.programming
Article #17760Re: JAVA-OO probleem
From: Kurt Schelfthout
Date: Mon, 08 Nov 1999 00:00
Date: Mon, 08 Nov 1999 00:00
61 lines
3471 bytes
3471 bytes
Bruno Lowagie wrote: > > > Waarom geef je de verantwoordelijkheid voor het maken van de wrappers > > niet aan de klasse Record? Die heeft toch al alle info (ttz uit welke > > tabel ze leest etc.) en kan dus gemakkelijk beslissen welk type Wrapper > > moet aangemaakt worden. > > Dan krijg je in Record een methode die iets als > > > > return new TabelX(this) > > Record is een zeer lage klasse (database niveau) > De wrapper-klassen zitten in een hogere laag. > > Die vorm van abstractie zou ik graag behouden. > Trouwens wat je voorstelt is evengoed mogelijk > met een switch in de abstracte TabelWrapper-klasse > (waar dit IMHO meer op z'n plaats is). Euhm, dat begrijp ik niet zo goed. Tuurlijk kan je dat ook met een switch doen maar die proberen we juist te vermijden wegens niet elegant. En als je, zoals jij zegt, uit het type Records op het Wrapper niveau nog moet gaan beslissen welk type Wrapper je moet maken, haal je evengoed (zo niet meer) je niveau van abstractie omlaag: op het niveau van Wrappers moet je immers nog steeds met de 'lage' Records gaan werken door hun type op te vragen. Als je de klasse 'Record' alleen gebruikt om de pure DB access te doen, waarvoor ik denk dat je ze bedoelt, en dan meteen een Wrapper laat teruggeven als resultaat, scherm je veel beter je Records af. Voor zover ik zie schrijf je dezelfde 'lelijke' switch nu twee keer opnieuw: ��n keer in Record, en dan nog is om uit het type Record de juiste Wrapper te bepalen. Als je meteen in de eerste switch het juiste object maakt, zit je direkt op het goede spoor. Lijkt me ook beter gezien het OO paradigma uitbreidbaarheid-aanpasbaarheid. Bijkomend voordeel is waarschijnlijk dat een Record niet eens meer een attribuut 'tabelnaam' en 'aantal velden' hoeft te hebben. Die info zit immers al in het Wrapper type, en alleen die wordt door de hogere lagen gebruikt. Ook je statische methode is dan eenvoudig te maken, al wat je hoeft te doen is op elke Record 'getWrapper' toe te passen. Dat is, denk ik,precies wat je probeerde te bereiken met 'this(Record)' van in je originele post. Fluit me maar terug als je dat nodig vindt ;) ik heb misschien (waarschijnlijk?) je situatie verkeerd ingeschat. > Frank schreef: > > Voor dit soort veel voorkomende design uitdagingen kan ik > > je het volgende boek aanraden: > > > > Design Patterns, E. Gamma et al., ISBN 0-201-63361-2 > > Van zodra ik er de tijd voor vind, ga ik er zeker eens > naar op zoek. Niet moeilijk te vinden, heb er ook zo eentje liggen :) Kurt
Technical Details
Message-ID:
<382708EA.766892DC@student.kuleuven.ac.be>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<3821AFBF.D19B54FE@rug.ac.be> <3825FA4D.221DE8C6@student.kuleuven.ac.be> <38268FFE.3CF1A29F@rug.ac.be>Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII X-Google-Thread: fcea4,5cd683c88cd7912a X-Google-Attributes: gidfcea4,public From: Kurt Schelfthout <Kurt.schelfthout@student.kuleuven.ac.be> Subject: Re: JAVA-OO probleem Date: 1999/11/08 Message-ID: <382708EA.766892DC@student.kuleuven.ac.be> X-Deja-AN: 545980108 Cache-Post-Path: marvin!unknown@kn-10-0-22-034.kotnet.kuleuven.ac.be Content-Transfer-Encoding: 8bit References: <3821AFBF.D19B54FE@rug.ac.be> <3825FA4D.221DE8C6@student.kuleuven.ac.be> <38268FFE.3CF1A29F@rug.ac.be> X-Accept-Language: en Content-Type: text/plain; charset=iso-8859-1 X-Complaints-To: abuse@belnet.be X-Trace: naxos.belnet.be 942082418 16146 134.58.127.3 (8 Nov 1999 17:33:38 GMT) Organization: KULeuvenNet X-Cache: nntpcache 2.3.3 (see http://www.nntpcache.org/) Mime-Version: 1.0 NNTP-Posting-Date: 8 Nov 1999 17:33:38 GMT Newsgroups: be.comp.programming