Skip to content

Commit d3f2def

Browse files
authored
Create 1_생성자_대신_정적_팩토리_메소드를_고려하라.md
1 parent 68d1972 commit d3f2def

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
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`

0 commit comments

Comments
 (0)