1. gaco777

    No comment

    gaco777
Changes in body
Source | HTML | Preview
@@ -1,72 +1,73 @@
普通:
```java
public class Singleton1 {
public final static Singleton1 INSTANCE = new Singleton1 ();
private Singleton1 () { }
}
```
進化バージョン:リフレクションでインスタンス作成防止
```java
public class Singleton2 {
private static boolean INSTANCE_CREATED;
public final static Singleton2 INSTANCE = new Singleton2 ();
private Singleton2 () {
if (INSTANCE_CREATED) {
throw new IllegalStateException("Singletonパターン です");
} else {
INSTANCE_CREATED = true;
}
}
```
Static Factoryバージョン:static factory
```java
public class Singleton3 {
public final static Singleton3 INSTANCE = new Singleton3 ();
private Singleton3 () { }
public static Singleton3 getInstance() { return INSTANCE; }
}
```
Lazy Initialization(遅延初期化):
```java
public class Singleton4 {
private Singleton4() {
}
public static Singleton4 getInstance() {
return Singleton4Holder.INSTANCE;
}
private static class Singleton4Holder{
private static final Singleton4 INSTANCE = new Singleton4 ();
}
}
```
Enum使用
```java
public enum EnumSingleton {
INSTANCE;
public static EnumSingleton getInstance() { return INSTANCE; }
}
```
-EnumはSingletonにはぴったりみたいです。
-理由は下記となっていますが、検証したこないので、わかりません。
-
-
+EnumはSingletonに一番いいです。
+理由は下記となっています
+
1、クーロンできない
2、シリアライズしても、データコピー取得でいない
3、リフレクションもできない
https://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.9
+Effective javaに記載があります
+