Item1. 생성자 대신에 정적 팩토리 메소드를 구현하라

2021-07-15 21:51:06

#Java#Effective Java 3/E
  • 정적 팩토리 메소드(static factory method)란 ? 클래스의 instance를 반환해주는 메소드
  • 클래스의 인스턴스를 얻는 전통적인 방식은 public constructor
  • 생성자 방식보다는 정적 팩토리 메소드를 사용하여 instance를 만들면 다음과 같은 장단점이 있다.

장점

  1. 이름을 가질 수 있다. 생성자 방식은 별도로 이름을 지정할 수 없다. 하지만 정적 팩토리 메소드 방식은 직관적으로 naming을 하여, 코드 가독성이 증가한다.

// 생성자 방식
BigInteger(int param, Random random){
    // return random prime 
}
// static factory method 방식
BigInteger.createRandomPrime(){
    //return rnadom prime
}

  1. 호출될때마다 인스턴스를 새로 생성하지는 않아도 된다. static method이기 때문에 인스턴스를 new 해서 생성하지 않고 클래스로 바로 호출 가능하다.

  1. 반환 타입의 하위 타입 객체를 반환할 수 있는 능력이 있다. 즉 , 반할 객체의 클래스를 선택할 수 있는 유연성이 있다.

  1. 입력 매개변수에 따라 매번 다른 클래스의 객체를 반환할 수 있다.

  1. 정적 팩토리 method를 작성하는 시점에는 반환할 객체의 클래스가 존재하지 않아도 된다.

단점

  1. 상속을 하려면 public,protected 생성자를 제공해야한다. 즉 , 정적 팩터리 메소드만 제공하면 하위 클래스를 만들 수없다.
프로필 이미지
@chani
바둑 좋아하는 개발자의 의미있는 학습 기록을 위한 공간입니다.

댓글

이 게시글에 대한 의견을 공유해주세요!

댓글