package proxy; /** * Real Subject — the actual, expensive database connection. * Opening it takes time. We want to delay this until truly needed. */ public class RealDatabaseConnection implements DatabaseConnection { private final String url; public RealDatabaseConnection(String url) { this.url = url; } @Override public void connect() { System.out.println("[Real DB] Connecting to " + url + " (expensive operation)..."); // Simulate connection setup time try { Thread.sleep(100); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } System.out.println("[Real DB] Connected."); } @Override public String executeQuery(String sql) { System.out.println("[Real DB] Executing: " + sql); return "ResultSet{rows=42}"; // simulated result } @Override public void disconnect() { System.out.println("[Real DB] Disconnecting from " + url); } }