File tree 1 file changed +37
-0
lines changed
1 file changed +37
-0
lines changed Original file line number Diff line number Diff line change
1
+ # 생성자 대신 정적 팩토리 메소드를 고려하라
2
+
3
+ ## 정적 팩토리 메소드의 장점
4
+ #### 1. 이름을 가질 수 있다.
5
+ #### 2. 호출될 때마다 인스턴스를 새로 생성하지는 않아도 된다.
6
+ - 특히 생성 비용이 큰 같은 객체가 자주 요청되는 상황에서 성능에 큰 도움이 된다. (cf. Flyweight pattern, Singleton pattern)
7
+
8
+ #### 3. 반환 타입의 하위 타입 객체를 반환할 수 있다.
9
+ - 일반적인 생성자는 다른 리턴 값을 가질 수 없지만, 정적 팩토리 메소드는 서브 타입 객체도 반환할 수 있다.
10
+
11
+ #### 4. 파라미터에 따라 클래스의 다른 객체를 반환할 수 있다.
12
+
13
+ #### 5. 정적 팩토리 메소드가 작성되는 시점에 반환할 객체의 클래스가 존재하지 않아도 된다.
14
+ ```` java
15
+ class MyClass {
16
+ public static Something newInstance () {
17
+ Class<?> something = Class . forName(" com.grace.Something" );
18
+ return something. newInstance();
19
+ }
20
+ }
21
+ ````
22
+
23
+
24
+ ## 정적 팩토리 메소드의 단점
25
+ #### 1. 상속을 할 수 없다.
26
+ #### 2. 다른 ` static ` 메소드와 구별하기 어렵다.
27
+
28
+
29
+ ## 일반적인 네이밍 규칙
30
+ - ` from `
31
+ - ` of `
32
+ - ` valueOf `
33
+ - ` instance ` , ` getInstance `
34
+ - ` create ` , ` newInstance `
35
+ - ` getType `
36
+ - ` newType `
37
+ - ` type `
You can’t perform that action at this time.
0 commit comments