본문 바로가기
Java/series

[Java 13편] 정적 팩토리 메서드로 객체 생성

by 무대포 개발자 2023. 2. 11.
728x90
반응형

source 는 Github 에 있습니다.

목차는 Java series 에 있습니다.

[Java 13편] 정적 팩토리 메서드로 객체 생성

정적 팩토리 메서드로 객체 생성

  • 객체를 생성할 때, 정적 팩토리 메서드로 객체 생성을 하는 예제에 대해서 정리했습니다.

특징

  • 객체 생성에 이름을 부여할 수 있기 때문에 가독성이 높습니다.
  • 하위 타입 객체를 return 할 수 있습니다.

Source

public class StaticFactoryMethodTest {
private static final String DEFAULT_ID = "10";
private static final String DEFAULT_NAME = "test";
/**
* from : 매개 변수를 하나 받아서 해당 타입의 인스턴스를 반환하는 method 명명 규칙입니다.
*/
@Test
@DisplayName("정적팩토리메서드 from 테스트")
void testStaticFactoryMethodFromTest() {
final var actual = Member.from(DEFAULT_NAME);
final var expected = Member.builder()
.id(DEFAULT_ID)
.name(DEFAULT_NAME)
.build();
Assertions.assertEquals(expected, actual);
}
/**
* of : 여러 매개변수를 받아 인스턴스를 반환하는 메소드 명명 규칙입니다.
*/
@Test
@DisplayName("정적팩토리메서드 of 테스트")
void testStaticFactoryMethodOfTest() {
final var actual = Member.of(DEFAULT_ID, DEFAULT_NAME);
final var expected = Member.builder()
.id(DEFAULT_ID)
.name(DEFAULT_NAME)
.build();
Assertions.assertEquals(expected, actual);
}
@Data
@Builder
@AllArgsConstructor
public static class Member {
private String id;
private String name;
public static Member from(final String name) {
return Member.builder()
.id(DEFAULT_ID)
.name(name)
.build();
}
public static Member of(final String id, final String name) {
return Member.builder()
.id(id)
.name(name)
.build();
}
}
}

'Java > series' 카테고리의 다른 글

[Java 15편] 자바 컴퍼지트 패턴  (0) 2023.02.11
[Java 14편] 자바 스트레지트 패턴  (0) 2023.02.11
[Java 12편] Map Sort 정리  (0) 2023.02.11
[Java 11편] Extend enum (EnumMap)  (0) 2023.01.05
[Java 10편] Functional Interface 정리  (0) 2022.12.01

댓글