Originariamente inviato da gasparirob
Si, ma
perche ?
ribadisco il concetto espresso da andbin
mettiamo che tu voglia fare un programma "GarageBand" che abbia degli strumenti (tromba, batteria, chitarra) che devono essere suonati da un player, allora avrai che player deve avere un metodo differente per ogni strumento che gli passi, perchè di ogni strumento player dve sapere che metodo di quello strumento richiamare per fargli emettere un suono. Immaginati che tu voglia estendere il programma a tutti gli strumenti possibili e immaginabili, allora sto povero player avrà moltissimi metodi sostanzialmente tutti uguali eccetto che per l'oggetto passameto in parametro. na schifezz
allora si applica un'interaccia agli strumenti che verrà implementata da ogni strumento
codice:
public interface Strumento{
void suona();
}
public Chitarra implements Strumento{
public void suona(){ System.out.println("zum-zum-zum");}
}
public Violino implements Strumento{
public void suona(){System.out.println("zin-zin-zin");}
}
...etc..
e il nostro player dovrà semplicemente
codice:
public static void Main(String[] args)
{
Strumento chitarra=new Chitarra();
Strumento violino=new Violino();
this.playMusic(chitarra);
this.palyMusic(violino);
}
public void playMusic(Strumento strumento)
{
strumento.suona();
}
nota che quindi oggetti che hanno in comune un dover fare qualcosa ma che il modo in cui lo fanno debba essere eseguito in maniera diversa a seconda dell'oggetto, possano essere riconducibili ad un'interfaccia che viene implementata ogni volta in maniera diversa.