From 30ef71265f9f0341daef5084e3e72e28fed87114 Mon Sep 17 00:00:00 2001 From: fuzhengwei <184172133@qq.com> Date: Sun, 31 May 2020 13:52:33 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=8F=E5=82=85=E5=93=A5=20|=20=E9=87=8D?= =?UTF-8?q?=E5=AD=A6=20Java=20=E8=AE=BE=E8=AE=A1=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=EF=BC=9A=E5=AE=9E=E6=88=98=E5=8D=95=E4=BE=8B=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 ++ itstack-demo-design-5-00/pom.xml | 15 ++++++++++ .../org/itstack/demo/design/Singleton_00.java | 10 +++++++ .../org/itstack/demo/design/Singleton_01.java | 15 ++++++++++ .../org/itstack/demo/design/Singleton_02.java | 15 ++++++++++ .../org/itstack/demo/design/Singleton_03.java | 14 +++++++++ .../org/itstack/demo/design/Singleton_04.java | 16 ++++++++++ .../org/itstack/demo/design/Singleton_05.java | 20 +++++++++++++ .../org/itstack/demo/design/Singleton_06.java | 29 +++++++++++++++++++ .../org/itstack/demo/design/Singleton_07.java | 10 +++++++ .../org/itstack/demo/design/test/ApiTest.java | 14 +++++++++ pom.xml | 1 + 12 files changed, 161 insertions(+) create mode 100644 itstack-demo-design-5-00/pom.xml create mode 100644 itstack-demo-design-5-00/src/main/java/org/itstack/demo/design/Singleton_00.java create mode 100644 itstack-demo-design-5-00/src/main/java/org/itstack/demo/design/Singleton_01.java create mode 100644 itstack-demo-design-5-00/src/main/java/org/itstack/demo/design/Singleton_02.java create mode 100644 itstack-demo-design-5-00/src/main/java/org/itstack/demo/design/Singleton_03.java create mode 100644 itstack-demo-design-5-00/src/main/java/org/itstack/demo/design/Singleton_04.java create mode 100644 itstack-demo-design-5-00/src/main/java/org/itstack/demo/design/Singleton_05.java create mode 100644 itstack-demo-design-5-00/src/main/java/org/itstack/demo/design/Singleton_06.java create mode 100644 itstack-demo-design-5-00/src/main/java/org/itstack/demo/design/Singleton_07.java create mode 100644 itstack-demo-design-5-00/src/test/java/org/itstack/demo/design/test/ApiTest.java diff --git a/.gitignore b/.gitignore index ceb33ee3..ee73abd0 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,5 @@ /itstack-demo-desgin-4-01/itstack-demo-desgin-4-01.iml /itstack-demo-design-4-02/itstack-demo-design-4-02.iml /itstack-demo-design-4-00/itstack-demo-design-4-00.iml +/itstack-demo-design-5-00/itstack-demo-design-5-00.iml +/itstack-demo-design-5-01/itstack-demo-design-5-01.iml diff --git a/itstack-demo-design-5-00/pom.xml b/itstack-demo-design-5-00/pom.xml new file mode 100644 index 00000000..f4ca70b6 --- /dev/null +++ b/itstack-demo-design-5-00/pom.xml @@ -0,0 +1,15 @@ + + + + itstack-demo-design + org.itstack + 1.0-SNAPSHOT + + 4.0.0 + + itstack-demo-design-5-00 + + + \ No newline at end of file diff --git a/itstack-demo-design-5-00/src/main/java/org/itstack/demo/design/Singleton_00.java b/itstack-demo-design-5-00/src/main/java/org/itstack/demo/design/Singleton_00.java new file mode 100644 index 00000000..65a71e13 --- /dev/null +++ b/itstack-demo-design-5-00/src/main/java/org/itstack/demo/design/Singleton_00.java @@ -0,0 +1,10 @@ +package org.itstack.demo.design; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +public class Singleton_00 { + + public static Map cache = new ConcurrentHashMap(); + +} diff --git a/itstack-demo-design-5-00/src/main/java/org/itstack/demo/design/Singleton_01.java b/itstack-demo-design-5-00/src/main/java/org/itstack/demo/design/Singleton_01.java new file mode 100644 index 00000000..769dfc97 --- /dev/null +++ b/itstack-demo-design-5-00/src/main/java/org/itstack/demo/design/Singleton_01.java @@ -0,0 +1,15 @@ +package org.itstack.demo.design; + +public class Singleton_01 { + + private static Singleton_01 instance; + + private Singleton_01() { + } + + public static Singleton_01 getInstance(){ + if (null != instance) return instance; + return new Singleton_01(); + } + +} diff --git a/itstack-demo-design-5-00/src/main/java/org/itstack/demo/design/Singleton_02.java b/itstack-demo-design-5-00/src/main/java/org/itstack/demo/design/Singleton_02.java new file mode 100644 index 00000000..298e846b --- /dev/null +++ b/itstack-demo-design-5-00/src/main/java/org/itstack/demo/design/Singleton_02.java @@ -0,0 +1,15 @@ +package org.itstack.demo.design; + +public class Singleton_02 { + + private static Singleton_02 instance; + + private Singleton_02() { + } + + public static synchronized Singleton_02 getInstance(){ + if (null != instance) return instance; + return new Singleton_02(); + } + +} diff --git a/itstack-demo-design-5-00/src/main/java/org/itstack/demo/design/Singleton_03.java b/itstack-demo-design-5-00/src/main/java/org/itstack/demo/design/Singleton_03.java new file mode 100644 index 00000000..6cbe53f1 --- /dev/null +++ b/itstack-demo-design-5-00/src/main/java/org/itstack/demo/design/Singleton_03.java @@ -0,0 +1,14 @@ +package org.itstack.demo.design; + +public class Singleton_03 { + + private static Singleton_03 instance = new Singleton_03(); + + private Singleton_03() { + } + + public static Singleton_03 getInstance() { + return instance; + } + +} diff --git a/itstack-demo-design-5-00/src/main/java/org/itstack/demo/design/Singleton_04.java b/itstack-demo-design-5-00/src/main/java/org/itstack/demo/design/Singleton_04.java new file mode 100644 index 00000000..78200252 --- /dev/null +++ b/itstack-demo-design-5-00/src/main/java/org/itstack/demo/design/Singleton_04.java @@ -0,0 +1,16 @@ +package org.itstack.demo.design; + +public class Singleton_04 { + + private static class SingletonHolder { + private static Singleton_04 instance = new Singleton_04(); + } + + private Singleton_04() { + } + + public static Singleton_04 getInstance() { + return SingletonHolder.instance; + } + +} diff --git a/itstack-demo-design-5-00/src/main/java/org/itstack/demo/design/Singleton_05.java b/itstack-demo-design-5-00/src/main/java/org/itstack/demo/design/Singleton_05.java new file mode 100644 index 00000000..f247b8f1 --- /dev/null +++ b/itstack-demo-design-5-00/src/main/java/org/itstack/demo/design/Singleton_05.java @@ -0,0 +1,20 @@ +package org.itstack.demo.design; + +public class Singleton_05 { + + private static Singleton_05 instance; + + private Singleton_05() { + } + + public static Singleton_05 getInstance(){ + if(null != instance) return instance; + synchronized (Singleton_05.class){ + if (null == instance){ + instance = new Singleton_05(); + } + } + return instance; + } + +} diff --git a/itstack-demo-design-5-00/src/main/java/org/itstack/demo/design/Singleton_06.java b/itstack-demo-design-5-00/src/main/java/org/itstack/demo/design/Singleton_06.java new file mode 100644 index 00000000..f108d262 --- /dev/null +++ b/itstack-demo-design-5-00/src/main/java/org/itstack/demo/design/Singleton_06.java @@ -0,0 +1,29 @@ +package org.itstack.demo.design; + +import java.util.concurrent.atomic.AtomicReference; + +public class Singleton_06 { + + private static final AtomicReference INSTANCE = new AtomicReference(); + + private static Singleton_06 instance; + + private Singleton_06() { + } + + public static final Singleton_06 getInstance() { + for (; ; ) { + Singleton_06 instance = INSTANCE.get(); + if (null != instance) return instance; + INSTANCE.compareAndSet(null, new Singleton_06()); + return INSTANCE.get(); + } + } + + public static void main(String[] args) { + System.out.println(Singleton_06.getInstance()); // org.itstack.demo.design.Singleton_06@2b193f2d + System.out.println(Singleton_06.getInstance()); // org.itstack.demo.design.Singleton_06@2b193f2d + } + + +} diff --git a/itstack-demo-design-5-00/src/main/java/org/itstack/demo/design/Singleton_07.java b/itstack-demo-design-5-00/src/main/java/org/itstack/demo/design/Singleton_07.java new file mode 100644 index 00000000..b0b9d799 --- /dev/null +++ b/itstack-demo-design-5-00/src/main/java/org/itstack/demo/design/Singleton_07.java @@ -0,0 +1,10 @@ +package org.itstack.demo.design; + +public enum Singleton_07 { + + INSTANCE; + public void test(){ + System.out.println("hi~"); + } + +} diff --git a/itstack-demo-design-5-00/src/test/java/org/itstack/demo/design/test/ApiTest.java b/itstack-demo-design-5-00/src/test/java/org/itstack/demo/design/test/ApiTest.java new file mode 100644 index 00000000..56fd3281 --- /dev/null +++ b/itstack-demo-design-5-00/src/test/java/org/itstack/demo/design/test/ApiTest.java @@ -0,0 +1,14 @@ +package org.itstack.demo.design.test; + +import org.itstack.demo.design.Singleton_00; +import org.itstack.demo.design.Singleton_07; +import org.junit.Test; + +public class ApiTest { + + @Test + public void test() { + Singleton_07.INSTANCE.test(); + } + +} diff --git a/pom.xml b/pom.xml index 5293234d..3be58d05 100755 --- a/pom.xml +++ b/pom.xml @@ -21,6 +21,7 @@ itstack-demo-design-4-00 itstack-demo-desgin-4-01 itstack-demo-design-4-02 + itstack-demo-design-5-00