Java 코드 최적화
Pavlos Kosmetatos
Lead Engineer @Wealthyhood
$$

public class RedisCache {
// The client library we use to connect to Redis
private final RedisClient client;
public RedisCache() {
// The connection is setup inside the constructor
connection = new RedisClient("cache.mycompany.com");
}
}
간단해 보이고 실제로 작동하지만, 잠재적인 문제가 있습니다
Redis 클라이언트가 전혀 필요하지 않다면 어떨까요?
public class RedisCache {
private RedisClient client;
// Instead of setting up the connection in the constructor,
// we only set it up when someone needs to get the client.
public RedisClient getClient() {
if (connection == null) {
connection = new RedisClient("cache.mycompany.com");
}
return connection;
}
}
// UserService needs cache access
public class UserService {
private RedisCache userCache = new RedisCache(); // First connection
}
// PaymentService also needs cache
public class PaymentService {
private RedisCache paymentCache = new RedisCache(); // Second connection
}
// ...same for OrderService ...
public class RedisCache {
private static RedisCache instance;
private RedisClient client;
// The constructor is private so that we ensure we only
// create RedisCache inside this class
private RedisCache() {}
public static RedisCache getInstance()
// We only create a RedisCache if one does not already exist
if (instance == null) { instance = new RedisCache(); }
return instance;
}
// ... The rest is the same as before ...
}
Java 코드 최적화