我有一个如下的Builder类,但是我不知道这是使该类具有Singleton行为并同时保留我的[[Builder模式的正确方法。使用一些“单元素枚举类型”?或某些recommended方式?
@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;
}
}