Code optimaliseren in Java
Pavlos Kosmetatos
Lead Engineer @Wealthyhood
$$

public class RedisCache {
// De clientbibliotheek die we gebruiken om met Redis te verbinden
private final RedisClient client;
public RedisCache() {
// De verbinding wordt in de constructor opgezet
connection = new RedisClient("cache.mycompany.com");
}
}
Dit lijkt simpel – en werkt – maar heeft een mogelijk probleem
Wat als we de Redis-client helemaal niet nodig hebben?
public class RedisCache {
private RedisClient client;
// In plaats van in de constructor de verbinding op te zetten,
// doen we dat pas zodra iemand de client nodig heeft.
public RedisClient getClient() {
if (connection == null) {
connection = new RedisClient("cache.mycompany.com");
}
return connection;
}
}
// UserService heeft cachetoegang nodig
public class UserService {
private RedisCache userCache = new RedisCache(); // Eerste verbinding
}
// PaymentService heeft ook cache nodig
public class PaymentService {
private RedisCache paymentCache = new RedisCache(); // Tweede verbinding
}
// ...idem voor OrderService ...
public class RedisCache {
private static RedisCache instance;
private RedisClient client;
// De constructor is privé zodat we RedisCache
// alleen binnen deze klasse aanmaken
private RedisCache() {}
public static RedisCache getInstance()
// We maken alleen een RedisCache als er nog geen bestaat
if (instance == null) { instance = new RedisCache(); }
return instance;
}
// ... De rest is hetzelfde als eerder ...
}
Code optimaliseren in Java