Sync Factory Method, Abstract Factory, Builder, Prototype to Java 25; fix post/code mismatches

This commit is contained in:
2026-06-23 11:00:02 +05:30
parent 2f684bf3d7
commit 2fbf89875b
51 changed files with 634 additions and 337 deletions

View File

@@ -0,0 +1,19 @@
package singleton;
public class AppConfig {
private AppConfig() {
System.out.println("Reading configuration from file...");
}
private static class Holder {
static final AppConfig INSTANCE = new AppConfig();
}
public static AppConfig getInstance() {
return Holder.INSTANCE;
}
public String getProperty(String key) {
return System.getProperty(key, "(not set)");
}
}

View File

@@ -1,34 +0,0 @@
package singleton;
/**
* Thread-safe Singleton using double-checked locking.
*/
public class DatabaseConnection {
private static volatile DatabaseConnection instance;
private final String url;
private int queryCount = 0;
private DatabaseConnection() {
this.url = "jdbc:mysql://localhost:3306/myapp";
System.out.println("Establishing connection to " + url);
}
public static DatabaseConnection getInstance() {
if (instance == null) {
synchronized (DatabaseConnection.class) {
if (instance == null) {
instance = new DatabaseConnection();
}
}
}
return instance;
}
public String executeQuery(String sql) {
queryCount++;
return "Result #" + queryCount + " for: " + sql;
}
public int getQueryCount() { return queryCount; }
public String getUrl() { return url; }
}

View File

@@ -1,19 +1,9 @@
package singleton;
public class Main {
public static void main(String[] args) {
System.out.println("=== Singleton Pattern Demo ===\n");
DatabaseConnection c1 = DatabaseConnection.getInstance();
DatabaseConnection c2 = DatabaseConnection.getInstance();
DatabaseConnection c3 = DatabaseConnection.getInstance();
System.out.println("\nAll three references same instance? " + (c1 == c2 && c2 == c3));
System.out.println(c1.executeQuery("SELECT * FROM users"));
System.out.println(c2.executeQuery("SELECT * FROM orders"));
System.out.println(c3.executeQuery("SELECT COUNT(*) FROM products"));
System.out.println("\nTotal queries: " + c1.getQueryCount());
AppConfig config1 = AppConfig.getInstance();
AppConfig config2 = AppConfig.getInstance();
System.out.println("Same instance? " + (config1 == config2)); // true
System.out.println("db.url = " + config1.getProperty("db.url"));
}
}