반응형
정적 팩토리 메서드(Static Factory Method)
클래스의 인스턴스를 생성하고 반환하는 정적 메서드 입니다.
주로 생성자 대신 사용되며, 객체 생성 로직을 숨기고 객체 생성을 유연하게 다룰 수 있게 합니다.
이러한 정적 팩토리 메서드는 해당 클래스의 이름을 갖지 않아도 되며,
호출할 때마다 새로운 객체를 생성할 필요가 없을 때 특히 유용합니다.
메서드 생성
public class MyClass {
// 생성자 대신 사용되는 정적 팩터리 메서드
public static MyClass createInstance() {
// 객체 생성 로직
return new MyClass();
}
}
위의 생성된 메서드를 활용하여 객체 생성
MyClass instance = MyClass.createInstance();
정적 팩토리 메서드의 장점
- 이름을 지정할 수 있습니다.
- 생성자의 경우 클래스명과 동일하지만, 정적 팩토리 메서드는 메소드명을 원하는 대로 지을 수 있습니다. 이를 통해 객체 생성의 의도를 더 명확하게 전달할 수 있습니다.
- 재사용 가능한 인스턴스 반환
- 정적 팩토리 메서드는 호출할 때마다 새로운 객체를 생성하지 않아도 되므로, 특정 조건에 따라 미리 생성한 객체를 반환할 수 있습니다.
public class MyClass {
private static final MyClass DEFAULT_INSTANCE = new MyClass();
public static MyClass createInstance() {
// 특별한 조건일 때 기존 객체를 반환
if (/* some condition */) {
return DEFAULT_INSTANCE;
} else {
return new MyClass();
}
}
}
3. 자식 클래스 반환 가능
- 정적 팩토리 메서드는 해당 클래스의 하위 클래스를 반환할 수 있어, 인터페이스를 통한 구현 객체를 제공할 때 유연성을 제공합니다.
public interface MyInterface {
// 정적 팩터리 메서드
static MyInterface createInstance() {
return new MyInterfaceImpl();
}
}
public class MyInterfaceImpl implements MyInterface {
// 구현 내용
}
4. 미리 정의된 인스턴스 반환
- 미리 정의된 상태의 객체를 반환할 수 있어, 불변 객체 패턴(immutability)과 함께 사용될 때 특히 효과적입니다.
public class MyImmutableClass {
private static final MyImmutableClass DEFAULT_INSTANCE = new MyImmutableClass(0, "default");
private final int value;
private final String name;
private MyImmutableClass(int value, String name) {
this.value = value;
this.name = name;
}
public static MyImmutableClass createDefaultInstance() {
return DEFAULT_INSTANCE;
}
}
이러한 장점들은 정적 패토리 메서드를 효과적으로 사용할 수 있는 경우를 고려할 때 나타납니다.
따라서 언제나 생성자 대신 정적 팩토리 메서드를 사용해야하는 것은 아니며, 상황에 맞게 선택하여 사용해야합니다.
반응형
'Java' 카테고리의 다른 글
JAVA | JVM(Java Virtual Machine)이란? JVM의 작동원리 (2) | 2024.08.21 |
---|---|
Java | Document Class / Element Class / Jsoup 크롤링 예제 코드 (0) | 2024.02.29 |
Java | TrustManager이란? / SSL 인증서 없이 https 통신 (1) | 2024.02.29 |
Java | JSONObject 클래스란? (0) | 2024.02.29 |
Java | HttpRequestHandler란? (0) | 2024.02.29 |