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