package org.springframework.roo.model;
/**
* Indicates an implementation that helps users build objects from scratch or
* from existing objects.
* <p>
* {@link Builder} objects are used in Spring Roo because most Roo types are
* intentionally and strictly immutable. This can make such objects tedious to
* create and modify. {@link Builder}s help create new instances using simple
* and convenient methods which reflect default values. They also help users
* edit existing instances.
*
* @author Ben Alex
* @since 1.1
*/
public interface Builder<T> {
/**
* @return the immutable object this builder creates (never returns null,
* but may throw an exception)
*/
T build();
}