Singleton Pattern
Ensures a class has only one instance while providing a global access point.
Eager Enitialization
public class EagerSingleton {
private EagerSingleton() {}
private static final EagerSingleton INSTANCE = new EagerSingleton();
public static EagerSingleton getInstance() {
return INSTANCE;
}
}
Lazy Initialization with Synchronization
public class LazySingleton {
private LazySingleton() {}
private static LazySingleton instance;
public static synchronized LazySingleton getInstance() {
if (instance == null) {
instance = new LazySingleton();
}
return instance;
}
}
Double-Checked Locking
public class DCLSingleton {
private DCLSingleton() {}
private static volatile DCLSingleton instance;
public static DCLSingleton getInstance() {
if (instance == null) {
synchronized (DCLSingleton.class) {
if (instance == null) {
instance = new DCLSingleton();
}
}
}
return instance;
}
}
Enum Singleton
public enum EnumSingleton {
INSTANCE;
public void execute() {
System.out.println("Enum singleton operation");
}
}
Builder Pattern
Separates object construction from its representation.
Product Clas
public class Computer {
private String cpu;
private String ram;
private String storage;
// Getters and setters
}
Abstract Builder
public abstract class ComputerBuilder {
protected Computer computer = new Computer();
public abstract void buildCPU();
public abstract void buildRAM();
public abstract void buildStorage();
public Computer getComputer() {
return computer;
}
}
Cnocrete Builder
public class GamingComputerBuilder extends ComputerBuilder {
@Override
public void buildCPU() {
computer.setCpu("Intel i9");
}
@Override
public void buildRAM() {
computer.setRam("32GB DDR5");
}
@Override
public void buildStorage() {
computer.setStorage("1TB NVMe SSD");
}
}
Director
public class ComputerDirector {
public Computer construct(ComputerBuilder builder) {
builder.buildCPU();
builder.buildRAM();
builder.buildStorage();
return builder.getComputer();
}
}