Question should instead be framed as how observer pattern helps in achieving callback functionality.
I wanted to give clear example which explains callbacks in a way how listeners (observers) works - following approach is greatly adopted by android library.
class RemoteClass {
private OnChangeListener mOnChangeListener;
void makeSomeChanges() {
/*
.. do something here and call callback
*/
mOnChangeListener.onChanged(this, 1);
}
public void setOnChangeListener(OnChangeListener listener) {
mOnChangeListener = listener;
}
public interface OnChangeListener {
public void onChanged(RemoteClass remoteClass, int test);
}
}
There is a class built my someone, which goes by name RemoteClass
and tells your class to reference the callback by passing implementation of OnChangeListener
interface to setOnChangeListener
method.
class Test {
public static void main(String[] args) {
RemoteClass obj = new RemoteClass();
obj.setOnChangeListener(demoChanged);
obj.makeSomeChanges();
}
private static RemoteClass.OnChangeListener demoChanged = new RemoteClass.OnChangeListener() {
@Override
public void onChanged(RemoteClass remoteClass, int incoming) {
switch (incoming) {
case 1:
System.out.println("I will take appropriate action!");
break;
default:
break;
}
}
};
}
Now your class has finished doing its task and RemoteClass
does its work and upon calling makeSomeChanges
whenever necessary results in onChanged
method execution using mOnChangeListener
reference.