From b94e1882aeadc54eb260504c7fdc3376431b751e Mon Sep 17 00:00:00 2001 From: Nilesh Ghone <33826370+Nilesh-Ghone@users.noreply.github.com> Date: Tue, 25 Oct 2022 13:41:39 +0530 Subject: [PATCH] added singleton-design-pattern java programs --- .../EagerInitializedSingleton.java | 19 +++++++++++++ .../LazyInitializedSingleton.java | 21 +++++++++++++++ .../StaticBlockSingleton.java | 27 +++++++++++++++++++ .../ThreadSafeSingleton.java | 22 +++++++++++++++ 4 files changed, 89 insertions(+) create mode 100644 Java/singleton-design-pattern/EagerInitializedSingleton.java create mode 100644 Java/singleton-design-pattern/LazyInitializedSingleton.java create mode 100644 Java/singleton-design-pattern/StaticBlockSingleton.java create mode 100644 Java/singleton-design-pattern/ThreadSafeSingleton.java diff --git a/Java/singleton-design-pattern/EagerInitializedSingleton.java b/Java/singleton-design-pattern/EagerInitializedSingleton.java new file mode 100644 index 0000000..0d3b9c9 --- /dev/null +++ b/Java/singleton-design-pattern/EagerInitializedSingleton.java @@ -0,0 +1,19 @@ +public class EagerInitializedSingleton { + + private static final EagerInitializedSingleton instance = new EagerInitializedSingleton(); + + //private constructor to avoid client applications to use constructor + private EagerInitializedSingleton(){} + + public static EagerInitializedSingleton getInstance(){ + return instance; + } + + public void test() { + System.out.println("This is Singleton instance"); + } + + public static void main(String[] args) { + EagerInitializedSingleton.getInstance().test(); + } +} \ No newline at end of file diff --git a/Java/singleton-design-pattern/LazyInitializedSingleton.java b/Java/singleton-design-pattern/LazyInitializedSingleton.java new file mode 100644 index 0000000..f2b5a12 --- /dev/null +++ b/Java/singleton-design-pattern/LazyInitializedSingleton.java @@ -0,0 +1,21 @@ +public class LazyInitializedSingleton { + + private static LazyInitializedSingleton instance; + + private LazyInitializedSingleton(){} + + public static LazyInitializedSingleton getInstance(){ + if(instance == null){ + instance = new LazyInitializedSingleton(); + } + return instance; + } + + public void test() { + System.out.println("This is LazyInitializedSingleton instance"); + } + + public static void main(String[] args) { + LazyInitializedSingleton.getInstance().test(); + } +} \ No newline at end of file diff --git a/Java/singleton-design-pattern/StaticBlockSingleton.java b/Java/singleton-design-pattern/StaticBlockSingleton.java new file mode 100644 index 0000000..6b89b70 --- /dev/null +++ b/Java/singleton-design-pattern/StaticBlockSingleton.java @@ -0,0 +1,27 @@ +public class StaticBlockSingleton { + + private static StaticBlockSingleton instance; + + private StaticBlockSingleton(){} + + //static block initialization for exception handling + static{ + try{ + instance = new StaticBlockSingleton(); + }catch(Exception e){ + throw new RuntimeException("Exception occured in creating singleton instance"); + } + } + + public static StaticBlockSingleton getInstance(){ + return instance; + } + + public void test() { + System.out.println("This is StaticBlockSingleton instance"); + } + + public static void main(String[] args) { + StaticBlockSingleton.getInstance().test(); + } +} \ No newline at end of file diff --git a/Java/singleton-design-pattern/ThreadSafeSingleton.java b/Java/singleton-design-pattern/ThreadSafeSingleton.java new file mode 100644 index 0000000..87a5672 --- /dev/null +++ b/Java/singleton-design-pattern/ThreadSafeSingleton.java @@ -0,0 +1,22 @@ +public class ThreadSafeSingleton { + + private static ThreadSafeSingleton instance; + + private ThreadSafeSingleton(){} + + public static synchronized ThreadSafeSingleton getInstance(){ + if(instance == null){ + instance = new ThreadSafeSingleton(); + } + return instance; + } + + public void test() { + System.out.println("This is ThreadSafeSingleton instance"); + } + + public static void main(String[] args) { + ThreadSafeSingleton.getInstance().test(); + } + +} \ No newline at end of file