Skip to content

Commit

Permalink
Update Design Patterns
Browse files Browse the repository at this point in the history
  • Loading branch information
T5750 committed Jan 18, 2020
1 parent 32bfc37 commit 81238ca
Show file tree
Hide file tree
Showing 20 changed files with 493 additions and 12 deletions.
377 changes: 377 additions & 0 deletions doc/source/patterns/designPatterns23.md

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion doc/source/patterns/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@ Design Patterns
:maxdepth: 2
:numbered: 0

designPatternsPrinciple
designPatternsPrinciple
designPatterns23
16 changes: 16 additions & 0 deletions patterns/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,22 @@
- [接口隔离原则](../doc/source/patterns/designPatternsPrinciple.md#接口隔离原则)
- [迪米特法则](../doc/source/patterns/designPatternsPrinciple.md#迪米特法则)
- [开闭原则](../doc/source/patterns/designPatternsPrinciple.md#开闭原则)
- [23种设计模式](../doc/source/patterns/designPatterns23.md)
- [单例模式](../doc/source/patterns/designPatterns23.md#单例模式)
- [工厂方法模式](../doc/source/patterns/designPatterns23.md#工厂方法模式)
- [抽象工厂模式](../doc/source/patterns/designPatterns23.md#抽象工厂模式)
- [模板方法模式](../doc/source/patterns/designPatterns23.md#模板方法模式)
- [建造者模式](../doc/source/patterns/designPatterns23.md#建造者模式)
- [原型模式](../doc/source/patterns/designPatterns23.md#原型模式)
- [中介者模式](../doc/source/patterns/designPatterns23.md#中介者模式)
- [命令模式](../doc/source/patterns/designPatterns23.md#命令模式)
- [责任链模式](../doc/source/patterns/designPatterns23.md#责任链模式)
- [策略模式](../doc/source/patterns/designPatterns23.md#策略模式)
- [迭代器模式](../doc/source/patterns/designPatterns23.md#迭代器模式)
- [观察者模式](../doc/source/patterns/designPatterns23.md#观察者模式)
- [备忘录模式](../doc/source/patterns/designPatterns23.md#备忘录模式)
- [访问者模式](../doc/source/patterns/designPatterns23.md#访问者模式)
- [解释器模式](../doc/source/patterns/designPatterns23.md#解释器模式)

## Runtime Environment
- [Java 7](http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package t5750.patterns.singleton;

/**
* Initialization on Demand Holder
*/
public class DemandHolderSingleton {
private static class SingletonHolder {
public final static DemandHolderSingleton instance = new DemandHolderSingleton();
}

public static DemandHolderSingleton getInstance() {
return SingletonHolder.instance;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package t5750.patterns.singleton;

/**
* 双重检查锁(Double-Checked Lock)
*/
public final class DoubleCheckedSingleton {
private static DoubleCheckedSingleton singObj = null;

private DoubleCheckedSingleton() {
}

public static DoubleCheckedSingleton getSingleInstance() {
if (null == singObj) {
synchronized (DoubleCheckedSingleton.class) {
if (null == singObj) {
singObj = new DoubleCheckedSingleton();
}
}
}
return singObj;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package t5750.patterns.singleton;

/**
* 饿汉模式
*/
public final class EagerSingleton {
private static EagerSingleton singObj = new EagerSingleton();

private EagerSingleton() {
}

public static EagerSingleton getSingleInstance() {
return singObj;
}
}
18 changes: 18 additions & 0 deletions patterns/src/main/java/t5750/patterns/singleton/LazySingleton.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package t5750.patterns.singleton;

/**
* 懒汉模式
*/
public final class LazySingleton {
private static LazySingleton singObj = null;

private LazySingleton() {
}

public static LazySingleton getSingleInstance() {
if (null == singObj) {
singObj = new LazySingleton();
}
return singObj;
}
}
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package t5750.patterns.singleton;

/**
* 线程安全
*/
public final class ThreadSafeSingleton {
private static ThreadSafeSingleton singObj = null;

private ThreadSafeSingleton() {
}

public static synchronized ThreadSafeSingleton getSingleInstance() {
if (null == singObj) {
singObj = new ThreadSafeSingleton();
}
return singObj;
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package singleton.ibm.example1;
package t5750.patterns.singleton.ibm.example1;

//https://www.ibm.com/developerworks/cn/java/designpattern/singleton/index.html
public class Singleton {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package singleton.ibm.example2;
package t5750.patterns.singleton.ibm.example2;

class SingletonException extends RuntimeException {
public SingletonException(String s) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package singleton.javaworld.example1;
package t5750.patterns.singleton.javaworld.example1;

//http://www.javaworld.com/article/2073352/core-java/simply-singleton.html
public class ClassicSingleton {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package singleton.javaworld.example1;
package t5750.patterns.singleton.javaworld.example1;

import org.apache.log4j.Logger;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package singleton.javaworld.example2;
package t5750.patterns.singleton.javaworld.example2;

import org.apache.log4j.Logger;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package singleton.javaworld.example2;
package t5750.patterns.singleton.javaworld.example2;

import org.apache.log4j.Logger;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package singleton.javaworld.example3;
package t5750.patterns.singleton.javaworld.example3;

public class Singleton implements java.io.Serializable {
public static Singleton INSTANCE = new Singleton();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package singleton.javaworld.example3;
package t5750.patterns.singleton.javaworld.example3;

import java.io.*;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package singleton.tutorialspoint;
package t5750.patterns.singleton.tutorialspoint;

//https://www.tutorialspoint.com/java/java_using_singleton.htm
public class ClassicSingleton {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package singleton.tutorialspoint;
package t5750.patterns.singleton.tutorialspoint;

//https://www.tutorialspoint.com/java/java_using_singleton.htm
// File Name: Singleton.java
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package singleton.tutorialspoint;
package t5750.patterns.singleton.tutorialspoint;

//https://www.tutorialspoint.com/java/java_using_singleton.htm
// File Name: SingletonDemo.java
Expand Down

0 comments on commit 81238ca

Please sign in to comment.