Static Factory Method
객체를 생성하는 패턴 중 하나로, 디자인 패턴의 하나인 팩터리 메서드 패턴의 일부. 정적 팩터리 메서드는 클래스의 인스턴스를 생성하는 정적인 메서드를 의미한다. 이러한 정적인 메서드를 사용하여 객체를 생성하고 반환하는 방법은 일반적인 생성자와 다르다.
특징
1. 이름을 가진다
생성자와 달리 정적 팩터리 메서드는 개발자가 자유롭게 이름을 지정할 수 있다. 이로 인해 객체를 생성하는 해당 코드의 의미를 전달할 수 있다.
2.반복 가능한 객체 생성
같은 인자를 가지고 여러 번 호출하면 항상 동일한 객체를 반환하는 것이 가능하다. 이는 객체를 캐싱하는 용도로 사용될 수 있다.
3.반환 타입의 다양화
반환 타입을 클래스의 하위 타입으로 자유롭게 선택할 수 있다. 이는 인터페이스를 통한 다형성을 활용하거나 유연한 코드를 작성하는데 도움이 된다.
public class Car {
private String brand;
private String model;
private Car(String brand, String model) {
this.brand = brand;
this.model = model;
}
// 정적 팩터리 메서드
public static Car createCar(String brand, String model) {
return new Car(brand, model);
}
Car를 만든다는 createCar라는 명확한 이름을 통해 Car 클래스의 인스턴스를 생성하여 반환한다. 이는 코드의 가독성을 높이고 객체 생성에 대한 제어를 클래스 내부에서 실행함으로써 캡슐화가 가능해진다.
다만 이러한 정적 팩터리 메서드를 사용하는 데 있어서는 몇 가지 주의할 점이 존재한다.
1. 가독성과 명확서 유지
정적 팩터리 메서드의 이름은 객체를 생성하는 목적을 잘 나타내야한다.
2.생성자와 혼동 X
생성자와 정적 팩터리 메서드의 매개변수의 형식이 비슷한 경우 혼동이 발생할 수 있으므로 주의
3.서브클래싱 제약
하위 클래스에서 해당 메서드를 오버라이딩 할 수 없다. 생성자를 사용하는 경우 서브클래스에서 생성자를 오버라이딩할 수 있지만 정적 팩터리 메서드는 이러한 유연성이 제한된다.
4.디버깅의 어려움
객체 생성의 로직을 메서드 내부에 숨기므로 디버깅이 어려울 수 있다. 객체 생성 과정엣 발생한 오류를 찾기 어려울 수 있으므로 이 부분을 유의해야한다.
'공부하면서 생긴 질문들 > Java' 카테고리의 다른 글
Inner class (0) | 2023.07.18 |
---|---|
Generic (0) | 2023.07.12 |
Enum (1) | 2023.07.09 |
Type Casting (0) | 2023.07.01 |
Wrapper 클래스 (0) | 2023.06.29 |