From 13abf49024958f83f2138f4d77a4242d0db3049f Mon Sep 17 00:00:00 2001 From: yejinchang Date: Mon, 24 Nov 2014 17:35:52 +0800 Subject: [PATCH 1/5] enum approach of singleton --- singleton/src/main/java/com/iluwatar/App.java | 4 ++++ .../src/main/java/com/iluwatar/EnumIvoryTower.java | 14 ++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 singleton/src/main/java/com/iluwatar/EnumIvoryTower.java diff --git a/singleton/src/main/java/com/iluwatar/App.java b/singleton/src/main/java/com/iluwatar/App.java index 4a3fcf361..6e88af35f 100644 --- a/singleton/src/main/java/com/iluwatar/App.java +++ b/singleton/src/main/java/com/iluwatar/App.java @@ -22,5 +22,9 @@ public class App { System.out.println("threadSafeIvoryTower1=" + threadSafeIvoryTower1); System.out.println("threadSafeIvoryTower2=" + threadSafeIvoryTower2); + EnumIvoryTower enumIvoryTower1 = EnumIvoryTower.getInstance(); + EnumIvoryTower enumIvoryTower2 = EnumIvoryTower.getInstance(); + System.out.println("enumIvoryTower1=" + enumIvoryTower1.getDeclaringClass().getCanonicalName() + "@" + enumIvoryTower1.hashCode()); + System.out.println("enumIvoryTower2=" + enumIvoryTower2.getDeclaringClass().getCanonicalName() + "@" + enumIvoryTower2.hashCode()); } } diff --git a/singleton/src/main/java/com/iluwatar/EnumIvoryTower.java b/singleton/src/main/java/com/iluwatar/EnumIvoryTower.java new file mode 100644 index 000000000..8eab18fe4 --- /dev/null +++ b/singleton/src/main/java/com/iluwatar/EnumIvoryTower.java @@ -0,0 +1,14 @@ +package com.iluwatar; + +/** + * + * Enum Singleton class. + * + */ +public enum EnumIvoryTower { + INSTANCE; + + public static EnumIvoryTower getInstance() { + return INSTANCE; + } +} From 406d2e7081b4f73bed8d38a88ca929918febad27 Mon Sep 17 00:00:00 2001 From: alwayswithme Date: Mon, 24 Nov 2014 18:01:44 +0800 Subject: [PATCH 2/5] simplified the println --- singleton/src/main/java/com/iluwatar/App.java | 4 ++-- singleton/src/main/java/com/iluwatar/EnumIvoryTower.java | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/singleton/src/main/java/com/iluwatar/App.java b/singleton/src/main/java/com/iluwatar/App.java index 6e88af35f..bd58befe4 100644 --- a/singleton/src/main/java/com/iluwatar/App.java +++ b/singleton/src/main/java/com/iluwatar/App.java @@ -24,7 +24,7 @@ public class App { EnumIvoryTower enumIvoryTower1 = EnumIvoryTower.getInstance(); EnumIvoryTower enumIvoryTower2 = EnumIvoryTower.getInstance(); - System.out.println("enumIvoryTower1=" + enumIvoryTower1.getDeclaringClass().getCanonicalName() + "@" + enumIvoryTower1.hashCode()); - System.out.println("enumIvoryTower2=" + enumIvoryTower2.getDeclaringClass().getCanonicalName() + "@" + enumIvoryTower2.hashCode()); + System.out.println("enumIvoryTower1=" + enumIvoryTower1); + System.out.println("enumIvoryTower2=" + enumIvoryTower2); } } diff --git a/singleton/src/main/java/com/iluwatar/EnumIvoryTower.java b/singleton/src/main/java/com/iluwatar/EnumIvoryTower.java index 8eab18fe4..5d3e73978 100644 --- a/singleton/src/main/java/com/iluwatar/EnumIvoryTower.java +++ b/singleton/src/main/java/com/iluwatar/EnumIvoryTower.java @@ -11,4 +11,9 @@ public enum EnumIvoryTower { public static EnumIvoryTower getInstance() { return INSTANCE; } + + @Override + public String toString() { + return getDeclaringClass().getCanonicalName() + "@" + hashCode(); + } } From 3f2cb224784d91ba71d3038f86fcdca5b0050c95 Mon Sep 17 00:00:00 2001 From: alwayswithme Date: Tue, 25 Nov 2014 16:10:17 +0800 Subject: [PATCH 3/5] remove the getInstance method --- singleton/src/main/java/com/iluwatar/App.java | 4 ++-- singleton/src/main/java/com/iluwatar/EnumIvoryTower.java | 4 ---- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/singleton/src/main/java/com/iluwatar/App.java b/singleton/src/main/java/com/iluwatar/App.java index bd58befe4..da9e9e5c0 100644 --- a/singleton/src/main/java/com/iluwatar/App.java +++ b/singleton/src/main/java/com/iluwatar/App.java @@ -22,8 +22,8 @@ public class App { System.out.println("threadSafeIvoryTower1=" + threadSafeIvoryTower1); System.out.println("threadSafeIvoryTower2=" + threadSafeIvoryTower2); - EnumIvoryTower enumIvoryTower1 = EnumIvoryTower.getInstance(); - EnumIvoryTower enumIvoryTower2 = EnumIvoryTower.getInstance(); + EnumIvoryTower enumIvoryTower1 = EnumIvoryTower.INSTANCE; + EnumIvoryTower enumIvoryTower2 = EnumIvoryTower.INSTANCE; System.out.println("enumIvoryTower1=" + enumIvoryTower1); System.out.println("enumIvoryTower2=" + enumIvoryTower2); } diff --git a/singleton/src/main/java/com/iluwatar/EnumIvoryTower.java b/singleton/src/main/java/com/iluwatar/EnumIvoryTower.java index 5d3e73978..e9c3dc4dc 100644 --- a/singleton/src/main/java/com/iluwatar/EnumIvoryTower.java +++ b/singleton/src/main/java/com/iluwatar/EnumIvoryTower.java @@ -8,10 +8,6 @@ package com.iluwatar; public enum EnumIvoryTower { INSTANCE; - public static EnumIvoryTower getInstance() { - return INSTANCE; - } - @Override public String toString() { return getDeclaringClass().getCanonicalName() + "@" + hashCode(); From 16ac98305305673c0b627959a8da99b305a1b538 Mon Sep 17 00:00:00 2001 From: alwayswithme Date: Tue, 25 Nov 2014 16:24:32 +0800 Subject: [PATCH 4/5] change comment --- singleton/src/main/java/com/iluwatar/EnumIvoryTower.java | 1 + 1 file changed, 1 insertion(+) diff --git a/singleton/src/main/java/com/iluwatar/EnumIvoryTower.java b/singleton/src/main/java/com/iluwatar/EnumIvoryTower.java index e9c3dc4dc..ad78cb855 100644 --- a/singleton/src/main/java/com/iluwatar/EnumIvoryTower.java +++ b/singleton/src/main/java/com/iluwatar/EnumIvoryTower.java @@ -3,6 +3,7 @@ package com.iluwatar; /** * * Enum Singleton class. + * http://stackoverflow.com/questions/70689/what-is-an-efficient-way-to-implement-a-singleton-pattern-in-java * */ public enum EnumIvoryTower { From 11a89f85a897f42e4be1bcf18ac11bf0e518b29f Mon Sep 17 00:00:00 2001 From: alwayswithme Date: Wed, 26 Nov 2014 09:15:40 +0800 Subject: [PATCH 5/5] move the SO question URL --- singleton/src/main/java/com/iluwatar/App.java | 2 ++ singleton/src/main/java/com/iluwatar/EnumIvoryTower.java | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/singleton/src/main/java/com/iluwatar/App.java b/singleton/src/main/java/com/iluwatar/App.java index da9e9e5c0..bf428b36c 100644 --- a/singleton/src/main/java/com/iluwatar/App.java +++ b/singleton/src/main/java/com/iluwatar/App.java @@ -5,6 +5,8 @@ package com.iluwatar; * Singleton pattern ensures that the class (IvoryTower) can have only one * existing instance and provides global access to that instance. * + * http://stackoverflow.com/questions/70689/what-is-an-efficient-way-to-implement-a-singleton-pattern-in-java + * */ public class App { diff --git a/singleton/src/main/java/com/iluwatar/EnumIvoryTower.java b/singleton/src/main/java/com/iluwatar/EnumIvoryTower.java index ad78cb855..e9c3dc4dc 100644 --- a/singleton/src/main/java/com/iluwatar/EnumIvoryTower.java +++ b/singleton/src/main/java/com/iluwatar/EnumIvoryTower.java @@ -3,7 +3,6 @@ package com.iluwatar; /** * * Enum Singleton class. - * http://stackoverflow.com/questions/70689/what-is-an-efficient-way-to-implement-a-singleton-pattern-in-java * */ public enum EnumIvoryTower {