Add creational patterns, Interpreter; remove scripts; update README
This commit is contained in:
34
01-creational/singleton/DatabaseConnection.java
Normal file
34
01-creational/singleton/DatabaseConnection.java
Normal file
@@ -0,0 +1,34 @@
|
||||
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; }
|
||||
}
|
||||
19
01-creational/singleton/Main.java
Normal file
19
01-creational/singleton/Main.java
Normal file
@@ -0,0 +1,19 @@
|
||||
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());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user