일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 생성자주입
- method refetence
- 소프트웨어의 품격
- ioc컨테이너
- 스프링
- fetch join
- kotlin ::
- 토비의 스프링
- 스프링시큐리티
- 그래프큐엘
- 스프링 포매터
- 스프링부트 도커
- jpa lazy
- kotlin 리팩터링
- 스프링di
- Spring
- java predicate
- spring formatter
- Atomicity
- open-session-in-view
- jpa no session
- 기능적 요구사항
- 비기능적 요구사항
- 동적파라미터
- 스프링 시큐리티 설정
- IOC
- 도커 이미지 빌드
- 수정자주입
- 정적팩토리메서드
- 자바 필터
Archives
- Today
- Total
공부기록
2장. 객체 생성과 파괴. 본문
반응형
아이템 1. 생성자 대신 정적 팩터리 메서드를 고려하라.
정적팩터리메서드의 장점.
1. 이름을 가질 수 있다.
이름이 없는 생성자와는 다르게 반환 될 객체의 특성을 쉽게 묘사가능.ex) BigInteger(int, int, Random) -> BigInteger.probablePrime
2. 호출될 때마다 인스턴스를 새로 생성하지않아도 됨.
객체가 자주 요청되는 상황일 때 성능을 크게 끌어올려 준다.
3. 반환 타입의 하위 타입 객체를 반환할 수 있는 능력이 있다.
4. 입력매개변수에 따라 매번 다른 클래스의 객체를 반환할 수 있다.
ex)EnumSet 클래스는 정적팩터리를 제공한다. 원소가 64개 이하면 RegularEnunSet, 원소가 65개 이상이면 JumboEnumSet
5. 정적팩터리메서드를 작성하는 시점에는 반환할 객체의 클래스가 존재하지 않아도 된다.
정적팩터리메서드의 단점.
1.정적 팩터리 메서드만 제공하면 하위 클래스를 만들 수 없다.
상속을 하려면 public이나 protected생성자가 필요하다.
하지만 시선을 달리해보면 상속보다 컴포지션(포함)을 사용하도록 유도하고, 불변타입으로 만드려면 이 제약을 지켜야하기 때문에 오히려 장점일 수 있다.
2.정적팩터리메서드는 프로그래머가 찾기 어렵다.
생성자는 API에 명확히 설명되있지만, 정적팩터리메서드는 그렇지 않다.( p12 명명방식들 참고.)
반응형