如何实现涉及异步调用的代理模式?

时间:2011-08-08 01:59:53

标签: java design-patterns asynchronous proxy-pattern

如何实现涉及异步调用的代理模式?

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

Customer customer;
customer = CustomerDAO.getCustomerByName("John");

并在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);
    }
}

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

1 个答案:

答案 0 :(得分:1)

这个怎么样? (对不起,我猜测'回调'课程)

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);
    }
}

通常,当您拥有异步API时,不希望引入阻塞方法。