From 4b18477fad31220c408396a6c908661b8a692dc7 Mon Sep 17 00:00:00 2001 From: chris Date: Wed, 3 Dec 2014 00:20:21 +0800 Subject: [PATCH 01/85] Fix README.md --- README.md | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 6328062..768237b 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,19 @@ DesignPatternStudy ================== #Creational Pattern: -###Prototype Pattern: +###1. Prototype Pattern: -###Singleton Pattern: +###2. Singleton Pattern: -###Builder: +###3. Builder Pattern: -###Registry of Singleton: +###4. Registry of Singleton Pattern: + +###5. Simple Factory Pattern: + +###6. Factory Method Pattern: + +###7. Abstract Factory Pattern: Our Discussion: https://designpattern.hackpad.com/The-Design-Pattern-Study-Group-of-Greeks-7hFUlBCoSNo From fae7324115755d9d49f7f9edade2896d8ffd4689 Mon Sep 17 00:00:00 2001 From: sufrank Date: Thu, 4 Dec 2014 20:49:32 +0800 Subject: [PATCH 02/85] Add abstract factory pattern in C# --- AbstractFactoryPattern/AbstractFactoryDemo.cs | 28 +++++++++++++++++++ .../AbstractProduct_Chocolate.cs | 11 ++++++++ .../AbstractProduct_PotatoChip.cs | 11 ++++++++ AbstractFactoryPattern/Factory_A.cs | 19 +++++++++++++ AbstractFactoryPattern/Factory_B.cs | 19 +++++++++++++ AbstractFactoryPattern/Product_Chocolate_A.cs | 14 ++++++++++ AbstractFactoryPattern/Product_Chocolate_B.cs | 14 ++++++++++ .../Product_PotatoChip_A.cs | 14 ++++++++++ .../Product_PotatoChip_B.cs | 14 ++++++++++ 9 files changed, 144 insertions(+) create mode 100644 AbstractFactoryPattern/AbstractFactoryDemo.cs create mode 100644 AbstractFactoryPattern/AbstractProduct_Chocolate.cs create mode 100644 AbstractFactoryPattern/AbstractProduct_PotatoChip.cs create mode 100644 AbstractFactoryPattern/Factory_A.cs create mode 100644 AbstractFactoryPattern/Factory_B.cs create mode 100644 AbstractFactoryPattern/Product_Chocolate_A.cs create mode 100644 AbstractFactoryPattern/Product_Chocolate_B.cs create mode 100644 AbstractFactoryPattern/Product_PotatoChip_A.cs create mode 100644 AbstractFactoryPattern/Product_PotatoChip_B.cs diff --git a/AbstractFactoryPattern/AbstractFactoryDemo.cs b/AbstractFactoryPattern/AbstractFactoryDemo.cs new file mode 100644 index 0000000..ea5909a --- /dev/null +++ b/AbstractFactoryPattern/AbstractFactoryDemo.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace DesignPatthenStudy +{ + class AbstractFactoryDemo + { + public static void Main() + { + AbstractFactory tFactory = null; + AbstractProduct_PotatoChip bPotatoChip = null; + AbstractProduct_Chocolate bChocolate = null; + + tFactory = new Factory_A(); + bPotatoChip = tFactory.Create_PotatoChip(); + bPotatoChip.GenaratePotatoChip(); + bChocolate = tFactory.Create_Chocolate(); + bChocolate.GenarateChocolate(); + + tFactory = new Factory_B(); + bPotatoChip = tFactory.Create_PotatoChip(); + bPotatoChip.GenaratePotatoChip(); + bChocolate = tFactory.Create_Chocolate(); + bChocolate.GenarateChocolate(); + } + } +} diff --git a/AbstractFactoryPattern/AbstractProduct_Chocolate.cs b/AbstractFactoryPattern/AbstractProduct_Chocolate.cs new file mode 100644 index 0000000..51a676c --- /dev/null +++ b/AbstractFactoryPattern/AbstractProduct_Chocolate.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace DesignPatthenStudy +{ + abstract class AbstractProduct_Chocolate + { + public abstract void GenarateChocolate(); + } +} diff --git a/AbstractFactoryPattern/AbstractProduct_PotatoChip.cs b/AbstractFactoryPattern/AbstractProduct_PotatoChip.cs new file mode 100644 index 0000000..99b69a5 --- /dev/null +++ b/AbstractFactoryPattern/AbstractProduct_PotatoChip.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace DesignPatthenStudy +{ + abstract class AbstractProduct_PotatoChip + { + public abstract void GenaratePotatoChip(); + } +} diff --git a/AbstractFactoryPattern/Factory_A.cs b/AbstractFactoryPattern/Factory_A.cs new file mode 100644 index 0000000..28fbd88 --- /dev/null +++ b/AbstractFactoryPattern/Factory_A.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace DesignPatthenStudy +{ + class Factory_A : AbstractFactory + { + public AbstractProduct_PotatoChip Create_PotatoChip() + { + return new Product_PotatoChip_A(); + } + + public AbstractProduct_Chocolate Create_Chocolate() + { + return new Product_Chocolate_A(); + } + } +} diff --git a/AbstractFactoryPattern/Factory_B.cs b/AbstractFactoryPattern/Factory_B.cs new file mode 100644 index 0000000..0ad4e7d --- /dev/null +++ b/AbstractFactoryPattern/Factory_B.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace DesignPatthenStudy +{ + class Factory_B : AbstractFactory + { + public AbstractProduct_PotatoChip Create_PotatoChip() + { + return new Product_PotatoChip_B(); + } + + public AbstractProduct_Chocolate Create_Chocolate() + { + return new Product_Chocolate_B(); + } + } +} diff --git a/AbstractFactoryPattern/Product_Chocolate_A.cs b/AbstractFactoryPattern/Product_Chocolate_A.cs new file mode 100644 index 0000000..254fe9b --- /dev/null +++ b/AbstractFactoryPattern/Product_Chocolate_A.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace DesignPatthenStudy +{ + class Product_Chocolate_A : AbstractProduct_Chocolate + { + public override void GenarateChocolate() + { + Console.WriteLine("Generate Chocolate A"); + } + } +} diff --git a/AbstractFactoryPattern/Product_Chocolate_B.cs b/AbstractFactoryPattern/Product_Chocolate_B.cs new file mode 100644 index 0000000..4efc1c3 --- /dev/null +++ b/AbstractFactoryPattern/Product_Chocolate_B.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace DesignPatthenStudy +{ + class Product_Chocolate_B : AbstractProduct_Chocolate + { + public override void GenarateChocolate() + { + Console.WriteLine("Generate Chocolate B"); + } + } +} diff --git a/AbstractFactoryPattern/Product_PotatoChip_A.cs b/AbstractFactoryPattern/Product_PotatoChip_A.cs new file mode 100644 index 0000000..b38f286 --- /dev/null +++ b/AbstractFactoryPattern/Product_PotatoChip_A.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace DesignPatthenStudy +{ + class Product_PotatoChip_A : AbstractProduct_PotatoChip + { + public override void GenaratePotatoChip() + { + Console.WriteLine("Generate PotatoChip A"); + } + } +} diff --git a/AbstractFactoryPattern/Product_PotatoChip_B.cs b/AbstractFactoryPattern/Product_PotatoChip_B.cs new file mode 100644 index 0000000..f644bf9 --- /dev/null +++ b/AbstractFactoryPattern/Product_PotatoChip_B.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace DesignPatthenStudy +{ + class Product_PotatoChip_B : AbstractProduct_PotatoChip + { + public override void GenaratePotatoChip() + { + Console.WriteLine("Generate PotatoChip B"); + } + } +} From 99dd05098affc8d293c13c9d053e6ec350328863 Mon Sep 17 00:00:00 2001 From: sufrank Date: Thu, 4 Dec 2014 21:01:18 +0800 Subject: [PATCH 03/85] Move abtract factory pattern in C# into subdirectory --- AbstractFactoryPattern/{ => CSharp}/AbstractFactoryDemo.cs | 0 AbstractFactoryPattern/{ => CSharp}/AbstractProduct_Chocolate.cs | 0 AbstractFactoryPattern/{ => CSharp}/AbstractProduct_PotatoChip.cs | 0 AbstractFactoryPattern/{ => CSharp}/Factory_A.cs | 0 AbstractFactoryPattern/{ => CSharp}/Factory_B.cs | 0 AbstractFactoryPattern/{ => CSharp}/Product_Chocolate_A.cs | 0 AbstractFactoryPattern/{ => CSharp}/Product_Chocolate_B.cs | 0 AbstractFactoryPattern/{ => CSharp}/Product_PotatoChip_A.cs | 0 AbstractFactoryPattern/{ => CSharp}/Product_PotatoChip_B.cs | 0 9 files changed, 0 insertions(+), 0 deletions(-) rename AbstractFactoryPattern/{ => CSharp}/AbstractFactoryDemo.cs (100%) rename AbstractFactoryPattern/{ => CSharp}/AbstractProduct_Chocolate.cs (100%) rename AbstractFactoryPattern/{ => CSharp}/AbstractProduct_PotatoChip.cs (100%) rename AbstractFactoryPattern/{ => CSharp}/Factory_A.cs (100%) rename AbstractFactoryPattern/{ => CSharp}/Factory_B.cs (100%) rename AbstractFactoryPattern/{ => CSharp}/Product_Chocolate_A.cs (100%) rename AbstractFactoryPattern/{ => CSharp}/Product_Chocolate_B.cs (100%) rename AbstractFactoryPattern/{ => CSharp}/Product_PotatoChip_A.cs (100%) rename AbstractFactoryPattern/{ => CSharp}/Product_PotatoChip_B.cs (100%) diff --git a/AbstractFactoryPattern/AbstractFactoryDemo.cs b/AbstractFactoryPattern/CSharp/AbstractFactoryDemo.cs similarity index 100% rename from AbstractFactoryPattern/AbstractFactoryDemo.cs rename to AbstractFactoryPattern/CSharp/AbstractFactoryDemo.cs diff --git a/AbstractFactoryPattern/AbstractProduct_Chocolate.cs b/AbstractFactoryPattern/CSharp/AbstractProduct_Chocolate.cs similarity index 100% rename from AbstractFactoryPattern/AbstractProduct_Chocolate.cs rename to AbstractFactoryPattern/CSharp/AbstractProduct_Chocolate.cs diff --git a/AbstractFactoryPattern/AbstractProduct_PotatoChip.cs b/AbstractFactoryPattern/CSharp/AbstractProduct_PotatoChip.cs similarity index 100% rename from AbstractFactoryPattern/AbstractProduct_PotatoChip.cs rename to AbstractFactoryPattern/CSharp/AbstractProduct_PotatoChip.cs diff --git a/AbstractFactoryPattern/Factory_A.cs b/AbstractFactoryPattern/CSharp/Factory_A.cs similarity index 100% rename from AbstractFactoryPattern/Factory_A.cs rename to AbstractFactoryPattern/CSharp/Factory_A.cs diff --git a/AbstractFactoryPattern/Factory_B.cs b/AbstractFactoryPattern/CSharp/Factory_B.cs similarity index 100% rename from AbstractFactoryPattern/Factory_B.cs rename to AbstractFactoryPattern/CSharp/Factory_B.cs diff --git a/AbstractFactoryPattern/Product_Chocolate_A.cs b/AbstractFactoryPattern/CSharp/Product_Chocolate_A.cs similarity index 100% rename from AbstractFactoryPattern/Product_Chocolate_A.cs rename to AbstractFactoryPattern/CSharp/Product_Chocolate_A.cs diff --git a/AbstractFactoryPattern/Product_Chocolate_B.cs b/AbstractFactoryPattern/CSharp/Product_Chocolate_B.cs similarity index 100% rename from AbstractFactoryPattern/Product_Chocolate_B.cs rename to AbstractFactoryPattern/CSharp/Product_Chocolate_B.cs diff --git a/AbstractFactoryPattern/Product_PotatoChip_A.cs b/AbstractFactoryPattern/CSharp/Product_PotatoChip_A.cs similarity index 100% rename from AbstractFactoryPattern/Product_PotatoChip_A.cs rename to AbstractFactoryPattern/CSharp/Product_PotatoChip_A.cs diff --git a/AbstractFactoryPattern/Product_PotatoChip_B.cs b/AbstractFactoryPattern/CSharp/Product_PotatoChip_B.cs similarity index 100% rename from AbstractFactoryPattern/Product_PotatoChip_B.cs rename to AbstractFactoryPattern/CSharp/Product_PotatoChip_B.cs From a253c1b86b8555a317ee00a7338603b9963b1add Mon Sep 17 00:00:00 2001 From: sufrank Date: Thu, 4 Dec 2014 21:40:01 +0800 Subject: [PATCH 04/85] Fix abstract factory pattern in C# lose file --- AbstractFactoryPattern/CSharp/AbstractFactory.cs | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 AbstractFactoryPattern/CSharp/AbstractFactory.cs diff --git a/AbstractFactoryPattern/CSharp/AbstractFactory.cs b/AbstractFactoryPattern/CSharp/AbstractFactory.cs new file mode 100644 index 0000000..76aef0b --- /dev/null +++ b/AbstractFactoryPattern/CSharp/AbstractFactory.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace DesignPatthenStudy +{ + interface AbstractFactory + { + AbstractProduct_PotatoChip Create_PotatoChip(); + AbstractProduct_Chocolate Create_Chocolate(); + } +} From 188298cd538fc2130adb6d839632c5eea269f44d Mon Sep 17 00:00:00 2001 From: chris Date: Thu, 4 Dec 2014 22:49:29 +0800 Subject: [PATCH 05/85] Refine Singleton example. --- SingletonPattern/Java/ClassicSingleton/Main.java | 13 +++++++++++++ .../Java/{ => ClassicSingleton}/Singleton.java | 15 +-------------- 2 files changed, 14 insertions(+), 14 deletions(-) create mode 100644 SingletonPattern/Java/ClassicSingleton/Main.java rename SingletonPattern/Java/{ => ClassicSingleton}/Singleton.java (50%) diff --git a/SingletonPattern/Java/ClassicSingleton/Main.java b/SingletonPattern/Java/ClassicSingleton/Main.java new file mode 100644 index 0000000..cee8322 --- /dev/null +++ b/SingletonPattern/Java/ClassicSingleton/Main.java @@ -0,0 +1,13 @@ +class Main +{ + public static void main(String[] args) + { + Singleton singletonInstance1 = Singleton.GetInstance(); + Singleton singletonInstance2 = Singleton.GetInstance(); + + if(singletonInstance1 == singletonInstance2) + { + System.out.println("They're the same instance"); + } + } +} diff --git a/SingletonPattern/Java/Singleton.java b/SingletonPattern/Java/ClassicSingleton/Singleton.java similarity index 50% rename from SingletonPattern/Java/Singleton.java rename to SingletonPattern/Java/ClassicSingleton/Singleton.java index d6c15f9..b397978 100644 --- a/SingletonPattern/Java/Singleton.java +++ b/SingletonPattern/Java/ClassicSingleton/Singleton.java @@ -3,9 +3,7 @@ class Singleton private static Singleton instance; // Prevent creating new instance from other class. - private Singleton() - { - } + private Singleton() {} // If other memebers want to get instance, they have to use this method. public static Singleton GetInstance() @@ -16,15 +14,4 @@ public static Singleton GetInstance() } return instance; } - - public static void main(String[] args) - { - Singleton singletonInstance1 = Singleton.GetInstance(); - Singleton singletonInstance2 = Singleton.GetInstance(); - - if(singletonInstance1 == singletonInstance2) - { - System.out.println("They're the same instance"); - } - } } From 1eb14b6d7907c0e3f41b3db4cbbf35765c4898e7 Mon Sep 17 00:00:00 2001 From: chris Date: Thu, 4 Dec 2014 22:56:16 +0800 Subject: [PATCH 06/85] Re-construct Double Check Lock Singleton case. --- .../DCLSingleton.java} | 14 ++++++-------- .../Java/DoubleCheckLockSingleton/Main.java | 13 +++++++++++++ 2 files changed, 19 insertions(+), 8 deletions(-) rename SingletonPattern/Java/{DoubleCheckLockSingleton.java => DoubleCheckLockSingleton/DCLSingleton.java} (60%) create mode 100644 SingletonPattern/Java/DoubleCheckLockSingleton/Main.java diff --git a/SingletonPattern/Java/DoubleCheckLockSingleton.java b/SingletonPattern/Java/DoubleCheckLockSingleton/DCLSingleton.java similarity index 60% rename from SingletonPattern/Java/DoubleCheckLockSingleton.java rename to SingletonPattern/Java/DoubleCheckLockSingleton/DCLSingleton.java index 69fc1ea..fc8d886 100644 --- a/SingletonPattern/Java/DoubleCheckLockSingleton.java +++ b/SingletonPattern/Java/DoubleCheckLockSingleton/DCLSingleton.java @@ -1,25 +1,23 @@ -public class DoubleCheckLockSingleton +public class DCLSingleton { // Use volatile to ensure that works on multithread. - private volatile static DoubleCheckLockSingleton instance = null; + private volatile static DCLSingleton instance = null; // Make this instance can be accessed only by public method. - private DoubleCheckLockSingleton() - { - } + private DCLSingleton() {} - public static DoubleCheckLockSingleton getInstance() + public static DCLSingleton getInstance() { // Only if it's the first for creating instance. if (instance == null) { // The method is synchronized on the class object. - synchronized(DoubleCheckLockSingleton.class) + synchronized(DCLSingleton.class) { // If the instance isn't existed, create the instance. if(instance == null) { - instance = new DoubleCheckLockSingleton(); + instance = new DCLSingleton(); } } } diff --git a/SingletonPattern/Java/DoubleCheckLockSingleton/Main.java b/SingletonPattern/Java/DoubleCheckLockSingleton/Main.java new file mode 100644 index 0000000..0a60d85 --- /dev/null +++ b/SingletonPattern/Java/DoubleCheckLockSingleton/Main.java @@ -0,0 +1,13 @@ +public class Main +{ + public static void main(String args[]) + { + DCLSingleton instance1 = DCLSingleton.getInstance(); + DCLSingleton instance2 = DCLSingleton.getInstance(); + + if(instance1 == instance2) + { + System.out.println("They're the same instance"); + } + } +} From 246348167be22bca5e15249f62d490dd20342d05 Mon Sep 17 00:00:00 2001 From: chris Date: Thu, 4 Dec 2014 22:57:50 +0800 Subject: [PATCH 07/85] Modify method names. --- SingletonPattern/Java/ClassicSingleton/Main.java | 4 ++-- SingletonPattern/Java/ClassicSingleton/Singleton.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/SingletonPattern/Java/ClassicSingleton/Main.java b/SingletonPattern/Java/ClassicSingleton/Main.java index cee8322..8ad89c0 100644 --- a/SingletonPattern/Java/ClassicSingleton/Main.java +++ b/SingletonPattern/Java/ClassicSingleton/Main.java @@ -2,8 +2,8 @@ class Main { public static void main(String[] args) { - Singleton singletonInstance1 = Singleton.GetInstance(); - Singleton singletonInstance2 = Singleton.GetInstance(); + Singleton singletonInstance1 = Singleton.getInstance(); + Singleton singletonInstance2 = Singleton.getInstance(); if(singletonInstance1 == singletonInstance2) { diff --git a/SingletonPattern/Java/ClassicSingleton/Singleton.java b/SingletonPattern/Java/ClassicSingleton/Singleton.java index b397978..9c4929b 100644 --- a/SingletonPattern/Java/ClassicSingleton/Singleton.java +++ b/SingletonPattern/Java/ClassicSingleton/Singleton.java @@ -6,7 +6,7 @@ class Singleton private Singleton() {} // If other memebers want to get instance, they have to use this method. - public static Singleton GetInstance() + public static Singleton getInstance() { if(instance == null) { From 27dc88cb77051083d5860060b1da44ce1c11c685 Mon Sep 17 00:00:00 2001 From: chris Date: Thu, 4 Dec 2014 23:00:59 +0800 Subject: [PATCH 08/85] Re-construct Eagerly Singleton case. --- SingletonPattern/Java/EagerlySingleton.java | 26 ------------------- .../Java/EagerlySingleton/ESingleton.java | 13 ++++++++++ .../Java/EagerlySingleton/Main.java | 13 ++++++++++ 3 files changed, 26 insertions(+), 26 deletions(-) delete mode 100644 SingletonPattern/Java/EagerlySingleton.java create mode 100644 SingletonPattern/Java/EagerlySingleton/ESingleton.java create mode 100644 SingletonPattern/Java/EagerlySingleton/Main.java diff --git a/SingletonPattern/Java/EagerlySingleton.java b/SingletonPattern/Java/EagerlySingleton.java deleted file mode 100644 index 474c20e..0000000 --- a/SingletonPattern/Java/EagerlySingleton.java +++ /dev/null @@ -1,26 +0,0 @@ -public class EagerlySingleton -{ - // Use static initiallizer, that will make instace created fast. - private static EagerlySingleton instance = new EagerlySingleton(); - - private EagerlySingleton() - { - } - - // Just get the instance - public static EagerlySingleton getInstance() - { - return instance; - } - - public static void main(String[] args) - { - EagerlySingleton singletonInstance1 = EagerlySingleton.getInstance(); - EagerlySingleton singletonInstance2 = EagerlySingleton.getInstance(); - - if(singletonInstance1 == singletonInstance2) - { - System.out.println("They're the same instance"); - } - } -} diff --git a/SingletonPattern/Java/EagerlySingleton/ESingleton.java b/SingletonPattern/Java/EagerlySingleton/ESingleton.java new file mode 100644 index 0000000..d48f479 --- /dev/null +++ b/SingletonPattern/Java/EagerlySingleton/ESingleton.java @@ -0,0 +1,13 @@ +public class ESingleton +{ + // Use static initiallizer, that will make instace created fast. + private static ESingleton instance = new ESingleton(); + + private ESingleton() {} + + // Just get the instance + public static ESingleton getInstance() + { + return instance; + } +} diff --git a/SingletonPattern/Java/EagerlySingleton/Main.java b/SingletonPattern/Java/EagerlySingleton/Main.java new file mode 100644 index 0000000..85fae7f --- /dev/null +++ b/SingletonPattern/Java/EagerlySingleton/Main.java @@ -0,0 +1,13 @@ +public class Main +{ + public static void main(String[] args) + { + ESingleton singletonInstance1 = ESingleton.getInstance(); + ESingleton singletonInstance2 = ESingleton.getInstance(); + + if(singletonInstance1 == singletonInstance2) + { + System.out.println("They're the same instance"); + } + } +} From 3657d50bf25b954cb87a4c418b4d3c14d85468b5 Mon Sep 17 00:00:00 2001 From: chris Date: Thu, 4 Dec 2014 23:05:12 +0800 Subject: [PATCH 09/85] Re-construct Synchronized Singleton case. --- .../Java/SynchronizedSingleton.java | 18 ------------------ .../Java/SynchronizedSingleton/Main.java | 13 +++++++++++++ .../Java/SynchronizedSingleton/SSingleton.java | 16 ++++++++++++++++ 3 files changed, 29 insertions(+), 18 deletions(-) delete mode 100644 SingletonPattern/Java/SynchronizedSingleton.java create mode 100644 SingletonPattern/Java/SynchronizedSingleton/Main.java create mode 100644 SingletonPattern/Java/SynchronizedSingleton/SSingleton.java diff --git a/SingletonPattern/Java/SynchronizedSingleton.java b/SingletonPattern/Java/SynchronizedSingleton.java deleted file mode 100644 index bd883f3..0000000 --- a/SingletonPattern/Java/SynchronizedSingleton.java +++ /dev/null @@ -1,18 +0,0 @@ -public class SynchronizedSingleton -{ - private static SynchronizedSingleton instance = null; - - private SynchronizedSingleton() - { - } - - // Make sure that only one thread can access the instance - synchronized static public SynchronizedSingleton getInstance() - { - if (instance == null) - { - instance = new SynchronizedSingleton(); - } - return instance; - } -} diff --git a/SingletonPattern/Java/SynchronizedSingleton/Main.java b/SingletonPattern/Java/SynchronizedSingleton/Main.java new file mode 100644 index 0000000..ec23ee1 --- /dev/null +++ b/SingletonPattern/Java/SynchronizedSingleton/Main.java @@ -0,0 +1,13 @@ +public class Main +{ + public static void main(String args[]) + { + SSingleton instance1 = SSingleton.getInstance(); + SSingleton instance2 = SSingleton.getInstance(); + + if(instance1 == instance2) + { + System.out.println("They're the same instance"); + } + } +} diff --git a/SingletonPattern/Java/SynchronizedSingleton/SSingleton.java b/SingletonPattern/Java/SynchronizedSingleton/SSingleton.java new file mode 100644 index 0000000..0121ddf --- /dev/null +++ b/SingletonPattern/Java/SynchronizedSingleton/SSingleton.java @@ -0,0 +1,16 @@ +public class SSingleton +{ + private static SSingleton instance = null; + + private SSingleton() {} + + // Make sure that only one thread can access the instance + synchronized static public SSingleton getInstance() + { + if (instance == null) + { + instance = new SSingleton(); + } + return instance; + } +} From ee206d58a2e9cc9584e604eebaf21e658f14ade5 Mon Sep 17 00:00:00 2001 From: chris Date: Tue, 9 Dec 2014 00:00:19 +0800 Subject: [PATCH 10/85] Rename interface. --- .../FactoryMethodDemo/.idea/workspace.xml | 166 ++++++++++++-- .../Java/PrototypeDemo/.idea/uiDesigner.xml | 124 +++++++++++ .../Java/PrototypeDemo/.idea/vcs.xml | 5 +- .../Java/PrototypeDemo/.idea/workspace.xml | 208 +++++++++++++----- .../out/production/PrototypeDemo/Dog.class | Bin 714 -> 716 bytes .../production/PrototypeDemo/IPrototype.class | Bin 0 -> 136 bytes .../out/production/PrototypeDemo/Main.class | Bin 0 -> 1114 bytes .../out/production/PrototypeDemo/Person.class | Bin 1213 -> 1215 bytes .../production/PrototypeDemo/Prototype.class | Bin 133 -> 0 bytes .../PrototypeDemo/PrototypeDemo.class | Bin 1140 -> 0 bytes .../Java/PrototypeDemo/src/Dog.java | 6 +- .../src/{Prototype.java => IPrototype.java} | 4 +- .../src/{PrototypeDemo.java => Main.java} | 2 +- .../Java/PrototypeDemo/src/Person.java | 6 +- 14 files changed, 445 insertions(+), 76 deletions(-) create mode 100644 PrototypePattern/Java/PrototypeDemo/.idea/uiDesigner.xml create mode 100644 PrototypePattern/Java/PrototypeDemo/out/production/PrototypeDemo/IPrototype.class create mode 100644 PrototypePattern/Java/PrototypeDemo/out/production/PrototypeDemo/Main.class delete mode 100644 PrototypePattern/Java/PrototypeDemo/out/production/PrototypeDemo/Prototype.class delete mode 100644 PrototypePattern/Java/PrototypeDemo/out/production/PrototypeDemo/PrototypeDemo.class rename PrototypePattern/Java/PrototypeDemo/src/{Prototype.java => IPrototype.java} (51%) rename PrototypePattern/Java/PrototypeDemo/src/{PrototypeDemo.java => Main.java} (96%) diff --git a/FactoryMethodPattern/Java/FactoryMethodDemo/.idea/workspace.xml b/FactoryMethodPattern/Java/FactoryMethodDemo/.idea/workspace.xml index 92fecb0..3136984 100644 --- a/FactoryMethodPattern/Java/FactoryMethodDemo/.idea/workspace.xml +++ b/FactoryMethodPattern/Java/FactoryMethodDemo/.idea/workspace.xml @@ -39,7 +39,7 @@ - + @@ -49,7 +49,7 @@ - + @@ -59,7 +59,7 @@ - + @@ -72,7 +72,7 @@ - + @@ -85,7 +85,7 @@ - + @@ -98,7 +98,7 @@ - + @@ -161,6 +161,7 @@ + @@ -195,7 +196,6 @@ - @@ -502,15 +502,17 @@ 1417530870330 + + - - + @@ -520,24 +522,24 @@ - - - - + + + + @@ -567,6 +569,142 @@