Wann die Schnittstelle in der Klasse implementiert werden soll und wann eine anonyme Implementierung einer Schnittstelle instanziiert werden soll. Unten sind zwei Schnittstellen.Wann die Schnittstelle in der Klasse implementiert werden soll und wann eine anonyme Implementierung einer Schnittstelle instanziiert werden soll
public interface InterfaceOne {
void one();
}
public interface InterfaceTwo {
void two();
}
Ansatz 1: Implementieren Schnittstelle in der Klasse
public class A implements InterfaceOne, InterfaceTwo {
private void doSomething() {
Hello hello = new Hello();
hello.hi(this);
hello.bye(this);
}
@Override
public void one() {
//One
}
@Override
public void two() {
//Two
}
}
Ansatz 2: Instantiate eine anonyme Implementierung einer Schnittstelle
public class B {
private void doSomething() {
Hello hello = new Hello();
hello.hi(interfaceOne);
hello.bye(interfaceTwo);
}
private InterfaceOne interfaceOne = new InterfaceOne() {
@Override
public void one() {
//One
}
};
private InterfaceTwo interfaceTwo = new InterfaceTwo() {
@Override
public void two() {
//Two
}
};
}
Was die Szenarien, in denen wir brauchen Approach 1 und Approach 2 zu verwenden?