37 lines
1.7 KiB
Java
37 lines
1.7 KiB
Java
package singleton;
|
|
|
|
public class Main {
|
|
public static void main(String[] args) {
|
|
|
|
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"));
|
|
}
|
|
}
|