java 中的回调模式和观察者模式有什么区别
what's difference between a callback and observer pattern in java
我在堆栈溢出
中经历了以下link
How do I perform a JAVA callback between classes?
在特定问题中,answer 18 指的是 callbacks 而 answer 9 指的是观察者模式.
我分不清两者的区别
谁能解释一下这两种方法的不同之处?
回调基本上是您为 class 提供的一段代码,并在特定时间被它调用。例如:
serverConnectionHandler = new ServerConnections(new ITypedCallback<Socket>() {
@Override
public void execute(Socket socket) {
// do something with your socket here
}
});
观察者模式是一种基于回调的设计模式。您可以在此处找到更多详细信息 http://en.wikipedia.org/wiki/Observer_pattern.
问题应该改为观察者模式如何帮助实现回调功能。
我想给出一个清晰的例子,以听众(观察者)的工作方式解释回调 - android 库大量采用了以下方法。
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);
}
}
有一个 class 建立了我的人,它的名字是 RemoteClass
并告诉你的 class 通过将 OnChangeListener
接口的实现传递给 setOnChangeListener
方法。
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;
}
}
};
}
现在你的 class 已经完成了它的任务,RemoteClass
开始了它的工作,并且在必要时调用 makeSomeChanges
会导致 onChanged
使用 [=18= 执行方法]参考。
我在堆栈溢出
中经历了以下linkHow do I perform a JAVA callback between classes?
在特定问题中,answer 18 指的是 callbacks 而 answer 9 指的是观察者模式.
我分不清两者的区别
谁能解释一下这两种方法的不同之处?
回调基本上是您为 class 提供的一段代码,并在特定时间被它调用。例如:
serverConnectionHandler = new ServerConnections(new ITypedCallback<Socket>() {
@Override
public void execute(Socket socket) {
// do something with your socket here
}
});
观察者模式是一种基于回调的设计模式。您可以在此处找到更多详细信息 http://en.wikipedia.org/wiki/Observer_pattern.
问题应该改为观察者模式如何帮助实现回调功能。
我想给出一个清晰的例子,以听众(观察者)的工作方式解释回调 - android 库大量采用了以下方法。
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);
}
}
有一个 class 建立了我的人,它的名字是 RemoteClass
并告诉你的 class 通过将 OnChangeListener
接口的实现传递给 setOnChangeListener
方法。
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;
}
}
};
}
现在你的 class 已经完成了它的任务,RemoteClass
开始了它的工作,并且在必要时调用 makeSomeChanges
会导致 onChanged
使用 [=18= 执行方法]参考。