hopakee schreef op 12 augustus 2002 @ 13:58:
Heb ik gedaan, ik heb gelezen wat een interface is en er een geimplementeerd,
maar ik zie het nut niet om een interface te gebruiken.
je kan bepaalde functionaliteit toevoegen aan je eigen class maar je moet 'm nog wel zelf implementeren.
m.a.w. Waarom zou je ervoor kiezen om je class af te leiden van een interface
Omdat je dus niet meer vast zit aan een bepaalde implementatie en andere compontenten dus praten met een 'verwachting' (interface dus), en wat die implementatie (class) is is dus voor de mensen die er mee praten onbelangrijk.
Stel dat je de volgende interface hebt:
code:
1
2
3
| public interface Verkoper{
public int getKorting();
} |
en de volgende 2 classes
code:
1
2
3
4
5
6
7
| public class RotVerkoper implements Verkoper{
public int getKorting(){return -10;}
}
public class VriendelijkeVerkoper implements Verkoper{
pubic int getKorting(){return 80;}
} |
En een klant gaat iets met een verkoper doen:
code:
1
2
3
4
5
6
| public class Klant{
public void doIets(Verkoper v){
int korting = v.getKorting();
}
} |
Dan hangt het dus af van welke verkoper hij krijgt hoeveel korting hij krijgt. Maar bij de klant hoeft daar dus geen rekening mee gehouden worden. Hij weet dat ij met een een Verkoper praat, en wat daar de implementatie van is is onbelangrijk.
Je zou dit ook op kunnen lossen met een abstracte class Verkoper, maar dan
moet je dus overerven van Verkoper en dit kan grote problemen opleveren met je class hierarchie.
Ik ontwerp op dit moment alles vanuit interfaces en de implementaties die hangen er wel achter zonder dat iemand daar iets mee te maken heeft. Hierdoor krijg je een gigantisch stuk bewegingsvrijheid.