有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (2) 个答案

  1. # 1 楼答案

    相反,问题应该是观察者模式如何帮助实现回调功能

    我想给出一个清晰的例子,以一种监听器(观察者)如何工作的方式解释回调——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);
        }
    }
    

    有一个my someone构建的类,名为RemoteClass,它告诉您的类通过将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;
                }
            }
        };
    }
    

    现在,您的类已经完成了它的任务,RemoteClass完成了它的工作,并且在必要时调用makeSomeChanges会导致使用mOnChangeListener引用执行onChanged方法

  2. # 2 楼答案

    回调基本上是为类提供的一段代码,并在某一点被类调用。例:

    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找到有关它的更多详细信息