使用背景:
设计一个登录函数,登录时候需要用到usr(其中包含 name,password),endpoint(ip,port),project(projectId)三个参数,这三个参数由外部对象loginInfo来传递,此后调用authentic方法进行认证,完成登录。
代码写法:
public class Test {
public boolean login(LoginInfo loginInfo) {
return ConnectBuilder.build()
.user(loginInfo.name, loginInfo.password)
.endpoint(loginInfo.ip, loginInfo.port)
.projectId(loginInfo.projectId)
.authenticate();
}
}
ConnectBuilder 类
public class ConnectBuilder {
private static ConnectBuilder INSTANCE;
private String endpoint;
private String user;
private String password;
private String projectId;
public ConnectBuilder endpoint(String ip, int port) {
if (port == 0) {
port = 8088;
}
this.endpoint = String.format("https://%s:%d/", ip, port);
return this;
}
public ConnectBuilder user(String name, String password) {
this.name = name;
this.password = password;
return this;
}
public ConnectBuilder projectId(String projectId) {
this.projectId = projectId;
return this;
}
public boolean authenticate() {
/**
* 具体登录逻辑
*/
return true;
}
/**
* 懒汉式单例创建对象
*/
public static ConnectBuilder build() {
if (INSTANCE == null) {
INSTANCE = new ConnectBuilder();
}
return INSTANCE;
}
}