17. oktober 2006 - 09:48Der er
6 kommentarer og 1 løsning
interface og OO
Hejsa
er lidt forvirret angående interfaces.
Sidder med et lille project hvor der ikke er noget specielt at vinde hvad angår nedarvning. Har en masse dataObjecter og et control lag der benytter disse. Er godt med på ideen om at et interface er en kontrakt til den offentlige verden og kan også gode se det smarte idet, hvis man er mange om udviklingen. Men her er der kun mig.
forstår også godt iden med at holde deklerationen sepereret fra implementeringen, så man let kan ændre i implementeringen, eller lade mange klasser arve det samme interface og så implentere forskellig functionalitet i metoderne.
Mit project er dog 100% fastlagt, og vidreudviklingen på det vil blive minimal.
Interfaces SKAL ikke bruges bare fordi man kan, men det kan være nyttigt i mange situationer, også selvom du er alene på projektet..
F.eks. kan du lave så meget rod du vil i senere versioner/vedligeholdelser, så længe du overholder interfacets krav.
Hvis din applikation er meget simpel og ikke er f.eks. lagdelt, kan brugen af interfaces godt være en overdrivelse, men hvis på nogen måde har snitflader, også internt i programmet, kan det være en enormt stor hjælp.
Det med at videreudviklingen bliver minimal er et farligt statement. Du kommer altid til at lave mere end du tror.
Lige en tilføjelse: Du nævner at interfaces er kontrakter til den offentlige verden. Det er lige så meget kontrakter til dig selv, og internt i din verden. Det kan hjælpe flowet i dit system hvis du altid ved du kan stole på hvad du får andre steder fra i applikationen.
En yderligere fordel ved at anvende interfaces er at det muliggør anvendelsen af mock objects når du laver din test kode. Med andre ord, så kan du lave en slags "black box test" af din specifikke kode.
jeg takker, men få jo bare flere og flere spørgsmål :) håber i lige gidder tage en runde mere.
har nu lave interfaces til alle mine factories, adaptorer og dataObjecter som jeg har på mit modellag. har ladet flere interfaces arve fra hindanden, og kan godt se ideen med indkapsling, kontrol og fremtidssikring..
men når jeg så skal til at bruge det bliver jeg lidt forvirret.
Spørgsmålet er om jeg har forstået oprettelsen og brugen af interfaces rigtigt.. hvad skal være privat og hvad skal være public, og hvad skal return typerne fra et interface/classe være mm..
Du har meget godt fat i at du i din iAdaptor returnerer en iPerson, men inden i rent faktisk bruger en konkret implementering. Pointen er her at du ikke udefra ved hvilken implementering du bruger, men at det i hvert fald implementerer et interface, og du ved hermed hvad du har med at gøre mht. properties og metoder.
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.