Both JNDI and the Netscape Directory SDK for Java require that all applicable details of a request be specified whenever an operation is to be processed, even if the same type of request is to be processed multiple times. The UnboundID LDAP SDK for Java certainly allows for this approach, but it also provides support for creating request objects that can be modified and reused for subsequent requests.
It is very common for client applications to issue a relatively small set of requests. For example, an application may have a common search in which the filter is changed each time but the rest of the properties (e.g., base DN, scope, requested attributes, controls, etc.) stay the same. In this case, the request object could be created and re-used, making the client implementation simpler and also more efficient, since it avoids allocating additional objects.
Another benefit provided by reusable request objects is that it can simplify usage with relatively uncommon request elements. Rather than using a constructor that requires a large number of parameters to be provided, the developer can use a simpler constructor that requires fewer parameters and then set the more obscure options individually.