Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何实现包含异步调用的代理模式?_Java_Design Patterns_Asynchronous_Proxy Pattern - Fatal编程技术网

Java 如何实现包含异步调用的代理模式?

Java 如何实现包含异步调用的代理模式?,java,design-patterns,asynchronous,proxy-pattern,Java,Design Patterns,Asynchronous,Proxy Pattern,如何实现包含异步调用的代理模式 举个例子,如果我想得到一些东西,我将首先检查对象是否驻留在内存中,如果不是,那么我将发出http请求来检索它(这是异步调用) 在CustomerDAO.getCustomerByName(“John”) 但是,由于它是异步的,因此会中断程序的流程。此外,getCustomers中的任何局部变量也必须传递给回调函数。有没有关于用Async实现代理模式的建议?谢谢。这个怎么样?(对不起,我在猜测“回调”类) 一般来说,当您已经有了异步API时,您不想引入阻塞方法。它将

如何实现包含异步调用的代理模式

举个例子,如果我想得到一些东西,我将首先检查对象是否驻留在内存中,如果不是,那么我将发出http请求来检索它(这是异步调用)

在CustomerDAO.getCustomerByName(“John”)

但是,由于它是异步的,因此会中断程序的流程。此外,getCustomers中的任何局部变量也必须传递给回调函数。有没有关于用Async实现代理模式的建议?谢谢。

这个怎么样?(对不起,我在猜测“回调”类)


一般来说,当您已经有了异步API时,您不想引入阻塞方法。

它将中断流程
customer=CustomerDAO.getCustomerByName(“John”)
@janetsmith:相反,我建议您在那里键入的代码行将破坏API的异步特性,如果您可以避免,这不是一个好主意。
Customer customer;
customer = CustomerDAO.getCustomerByName("John");
Customer getCustomerByName(String name)
{
    int age = 40;

    if (map.contains(name)) 
    {
        Customer customer = map.get(name);
        customer.age = age;
        return customer;
    }
    else
    {
        makeRequestAsnyc(name, callback);
    }
}
Customer getCustomerByName(String name, Callback callback)
{
    int age = 40;

    if (map.contains(name)) 
    {
        Customer customer = map.get(name);
        customer.age = age;
        callback.call(customer);
    }
    else
    {
        makeRequestAsnyc(name, callback);
    }
}