#10 effective java: item 4
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
package com.example.effectivejava.chapter01.item03.staticfactory;
|
||||
|
||||
import java.util.function.Supplier;
|
||||
|
||||
// 코드 3-2 정적 팩터리 방식의 싱글턴 (24쪽)
|
||||
public class Elvis implements Singer {
|
||||
private static final Elvis INSTANCE = new Elvis();
|
||||
@@ -15,6 +17,8 @@ public class Elvis implements Singer {
|
||||
Elvis elvis = Elvis.getInstance();
|
||||
elvis.leaveTheBuilding();
|
||||
|
||||
Supplier<Elvis> supplier = Elvis::getInstance;
|
||||
|
||||
System.out.println(Elvis.getInstance());
|
||||
System.out.println(Elvis.getInstance());
|
||||
}
|
||||
|
||||
@@ -7,7 +7,6 @@ public class MetaElvis<T> {
|
||||
|
||||
private MetaElvis() { }
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public static <E> MetaElvis<E> getInstance() { return (MetaElvis<E>) INSTANCE; }
|
||||
|
||||
public void say(T t) {
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.example.effectivejava.chapter01.item04;
|
||||
|
||||
public abstract class AbstractUtilityClass {
|
||||
|
||||
public AbstractUtilityClass() {
|
||||
System.out.println("constructor");
|
||||
}
|
||||
|
||||
public static String hello() {
|
||||
return "hello";
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
String hello = AbstractUtilityClass.hello();
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.example.effectivejava.chapter01.item04;
|
||||
|
||||
public class DefaultUtilityClass extends AbstractUtilityClass {
|
||||
|
||||
public static void main(String[] args) {
|
||||
DefaultUtilityClass utilityClass = new DefaultUtilityClass();
|
||||
utilityClass.hello();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.example.effectivejava.chapter01.item04;
|
||||
|
||||
public class UtilityClass {
|
||||
|
||||
/**
|
||||
* 이 클래스는 인스턴스를 만들 수 없습니다.
|
||||
*/
|
||||
private UtilityClass() {
|
||||
throw new AssertionError();
|
||||
}
|
||||
|
||||
public static String hello() {
|
||||
return "hello";
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
String hello = UtilityClass.hello();
|
||||
|
||||
UtilityClass utilityClass = new UtilityClass();
|
||||
utilityClass.hello();
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user