如何封装client/tool
单例
Demo
public class ZooKeeperTemplate implements AutoCloseable {
private static final Logger logger = LoggerFactory.getLogger(ZooKeeperTemplate.class);
/** zookeeper session timeout: 30 seconds */
private static final int DEFAULT_SESSION_TIMEOUT_MILLISECONDS = 30_000;
/** zookeeper connect timeout: 60 seconds */
private static final int DEFAULT_CONNECT_TIMEOUT_MILLISECONDS = 60_000;
/** znode path separator */
private static final String PATH_SEPARATOR = "/";
public static ZooKeeperTemplate getInstance(String zooKeeperHost) {
return getInstance(zooKeeperHost, null, null);
}
public static ZooKeeperTemplate getInstance(String zooKeeperHost, Integer sessionTimeoutMilliseconds, Integer connectTimeoutMilliseconds) {
return new ZooKeeperTemplate(zooKeeperHost, sessionTimeoutMilliseconds, connectTimeoutMilliseconds);
}
private final String zooKeeperHost;
private final Integer sessionTimeoutMilliseconds;
private final Integer connectTimeoutMilliseconds;
private final ZooKeeper zoo;
private ZooKeeperTemplate(String zooKeeperHost, Integer sessionTimeoutMilliseconds, Integer connectTimeoutMilliseconds) {
this.zooKeeperHost = zooKeeperHost;
this.sessionTimeoutMilliseconds = defaultValue(sessionTimeoutMilliseconds, DEFAULT_SESSION_TIMEOUT_MILLISECONDS);
this.connectTimeoutMilliseconds = defaultValue(connectTimeoutMilliseconds, DEFAULT_CONNECT_TIMEOUT_MILLISECONDS);
this.zoo = connect();
}
//TODO 省略
} Builder构建器
Demo
封装技巧
返回值
统一校验
AutoCloseable/Closeable
最后更新于