У меня есть класс Builder, как показано ниже, но я понятия не имею, как правильно сделать так, чтобы этот класс имел Singleton поведение и оставался моим шаблоном Builder в то же время. Используете какой-нибудь одноэлементный тип перечисления? или какой-то рекомендуемый способ?
@AllArgsConstructor(access = AccessLevel.PRIVATE)
@Getter
public class ClientMailAdapter {
public static ClientMailAdapter.WebLiteRequestBuilder builder() {
return new ClientMailAdapter.WebLiteRequestBuilder();
}
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public static class WebLiteRequestBuilder {
private Map<String, String> parameters;
private String username;
private String password;
private Source source;
public ClientMailAdapter.WebLiteRequestBuilder parameters(final Map<String, String> parameters) {
this.parameters = parameters;
return this;
}
public ClientMailAdapter.WebLiteRequestBuilder username(final String username) {
this.username = username;
return this;
}
public ClientMailAdapter.WebLiteRequestBuilder password(final String password) {
this.password = password;
return this;
}
public ClientMailAdapter.WebLiteRequestBuilder source(final Source source) {
this.source = source;
return this;
}
public ClientMailResult sendEmail() {
return new ClientMailService().sendEmailXML(
ClientRequest.builder()
.username(username)
.password(password)
.parameters(parameters)
.source(source)
.build());
}
}
@AllArgsConstructor
@Getter
public enum Source {
XXXXX("Source Name To Be Defined X");
private final String name;
}
}