728x90
반응형
source 는 Github 에 있습니다.
목차는 Java series 에 있습니다.
[Java 13편] 정적 팩토리 메서드로 객체 생성
정적 팩토리 메서드로 객체 생성
- 객체를 생성할 때, 정적 팩토리 메서드로 객체 생성을 하는 예제에 대해서 정리했습니다.
특징
- 객체 생성에 이름을 부여할 수 있기 때문에 가독성이 높습니다.
- 하위 타입 객체를 return 할 수 있습니다.
Source
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
댓글