DEV Community

Discussion on: Builder Design Pattern

Collapse
 
chaniro profile image
Bastien BARET

A cool way of using builder design pattern when you want mandatory parameters:

public interface IRequestBuilderWithoutMethod {
    IRequestBuilderWithoutTimeout setMethod(HttpMethod method);
}


public interface IRequestBuilderWithoutTimeout {
    ICompletedRequest setTimeout(long timeout);
}

public interface ICompletedRequest {
    HttpResponse execute();
}
HttpRequestBuilder builder = HttpRequestBuilder.create('https://dev.to') //Return an IRequestBuilderWithoutMethod 
    .setMethod(HttpMethod.GET) //Return an IRequestBuilderWithoutTimeout 
    .setTimeout(2000L) //Return an ICompletedRequest 
    .execute();