Sync Singleton to Java 25: split 6 implementations into separate files, consolidated Main.java demo
This commit is contained in:
@@ -1,9 +1,36 @@
|
||||
package singleton;
|
||||
|
||||
public class Main {
|
||||
public static void main(String[] args) {
|
||||
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"));
|
||||
|
||||
System.out.println("--- Implementation 1: Eager ---");
|
||||
AppConfigEager eager1 = AppConfigEager.getInstance();
|
||||
AppConfigEager eager2 = AppConfigEager.getInstance();
|
||||
System.out.println("Same instance? " + (eager1 == eager2));
|
||||
System.out.println("db.url = " + eager1.getProperty("db.url"));
|
||||
|
||||
System.out.println("\n--- Implementation 2: Naive Lazy ---");
|
||||
AppConfigNaiveLazy lazy1 = AppConfigNaiveLazy.getInstance();
|
||||
AppConfigNaiveLazy lazy2 = AppConfigNaiveLazy.getInstance();
|
||||
System.out.println("Same instance? " + (lazy1 == lazy2));
|
||||
|
||||
System.out.println("\n--- Implementation 3: Synchronized Method ---");
|
||||
AppConfigSynchronized sync1 = AppConfigSynchronized.getInstance();
|
||||
AppConfigSynchronized sync2 = AppConfigSynchronized.getInstance();
|
||||
System.out.println("Same instance? " + (sync1 == sync2));
|
||||
|
||||
System.out.println("\n--- Implementation 4: Double-Checked Locking ---");
|
||||
AppConfigDCL dcl1 = AppConfigDCL.getInstance();
|
||||
AppConfigDCL dcl2 = AppConfigDCL.getInstance();
|
||||
System.out.println("Same instance? " + (dcl1 == dcl2));
|
||||
|
||||
System.out.println("\n--- Implementation 5: Holder Idiom ---");
|
||||
AppConfigHolder holder1 = AppConfigHolder.getInstance();
|
||||
AppConfigHolder holder2 = AppConfigHolder.getInstance();
|
||||
System.out.println("Same instance? " + (holder1 == holder2));
|
||||
|
||||
System.out.println("\n--- Implementation 6: Enum ---");
|
||||
AppConfigEnum enumConfig = AppConfigEnum.INSTANCE;
|
||||
System.out.println("db.url = " + enumConfig.getProperty("db.url"));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user