Builder
design pattern is to separate the construction of a complex object from its representation.Product
:xxxxxxxxxx
public interface Session {
public String sendRequest(final String request);
}
Concrete Product
:xxxxxxxxxx
public class HttpSession implements Session {
public String sendRequest(final String request) {
return "http response";
}
}
Builder
:xxxxxxxxxx
public interface SessionBuilder {
public Session getSession();
public void createSession();
public void configureSession();
}
Concrete Builder
:xxxxxxxxxx
public class HttpSessionBuilder implements SessionBuilder {
private Session session;
public Session getSession() {
return session;
}
public void createSession() {
this.session = new HttpSession();
// do something else with the created session ...
}
public void configureSession() {
// configure the session ...
}
}
Director
:xxxxxxxxxx
public class SessionDirector {
private SessionBuilder sessionBuilder;
public SessionDirector(final SessionBuilder sessionBuilder) {
this.sessionBuilder = sessionBuilder;
}
public Session build() {
sessionBuilder.createSession();
sessionBuilder.configureSession();
return sessionBuilder.getSession();
}
}
Builder
design pattern:xxxxxxxxxx
public class BuilderPatternTest {
public static void main(String[] args) {
// create the builder
final SessionBuilder sessionBuilder = new HttpSessionBuilder();
// create the director
final SessionDirector sessionDirector = new SessionDirector(sessionBuilder);
// create the session
final Session session = sessionDirector.build();
// call methods
final String response = session.sendRequest("request");
System.out.println(response);
}
}