Private 생성자나 열거 타입으로 싱글턴임을 보증하라 싱글턴이란, 인스턴스를 오직 하나만 생성할 수 있는 클래스를 말한다. 싱글턴을 만드는 방식 두 가지 두 가지 모두 생성자는 private으로 감춰두고, 유일한 인스턴스에 접근할 수 있는 수단으로 public static 멤버를 하나 마련해둔다. 첫번째 방식 //public static final 필드 방식의 싱글턴 public class Elvis { public static final Elvis INSTANCE = new Elvis(); private Elvis(){...}; } private 생성자는 public static final 필드인 Elvis.INSTANCE를 초기화할 때 딱 한번만 호출된다. public 이나 protected(같은..
생성자에 매개변수가 많다면 빌더를 고려하라 점층적 생성자 패턴 생성자를 매개변수 개수에 따라 계속적으로 추가하는 패턴을 말함 이 클래스의 인스턴스를 만드려면 원하는 매개변수를 모두 포함하는 생성자 중 가장 짧은 것을 골라 호출하면 되는데, 클라이언트 입장에서 매개 변수로 불필요한 변수를 삽입할 때 헷갈릴 수 있다, 결국, 클라이언트가 실수로 매개변수의 순서를 바꾸어 값이 들어오면 런타임 에러가 발생할 수 있다. 이런 단점을 해결하기 위해 자바빈즈 패턴을 활용한다. 자바빈즈 패턴 기본 생성자만을 만들고 매개변수로 필요한 값들은 set메서드를 활용해서 객체를 완성하는 특징이다. 하지만 자바빈즈 패턴에서는 객체 하나를 만들려면 메서드를 여러 개 호출해야하고, 객체가 완전히 생성되기 전까지는 일관성이 무너진 상..
팩토리 메서드 패턴 팩토리 메서드 패턴이란, 객체를 생성하는 부분을 서브 클래스로 분리하여 처리하도록 캡슐화한 패턴을 말한다. 결과적으로, 객체를 만들어내는 공장을 만드는 패턴 Ex. //1. 로봇의 인터페이스와 로봇을 구현하는 구현체를 작성 //Robot public interface Robot { public String name(String name); } //AnimalRobot public class AnimalRobot implements Robot { @Override public String name(String name) { return "Animal"; } } //HumanRobot public class HumanRobot implements Robot { @Override publi..
생성자 대신 정적 팩토리 메서드를 고려하라 클래스 생성자와 별도로 정적 팩토리 메서드를 제공할 수 있다. public static Boolean vlueOf(boolean b) { return b ? Boolean.TRUE : Boolean.FALSE; } 정적 팩토리 메서드가 생성자보다 좋은 장점 다섯가지 이름을 가질 수 있다. 생성자는 반환 시 객체의 특성을 알기 어렵지만, 정적 팩터리는 이름만 잘 지으면 반환될 객체의 특성을 쉽게 묘사할 수 있다. 생성자인 BigInteger(int, int, Random)과 정적 팩토리 메서드인 BigInteger.probablePrime 중 어느 쪽이 '값이 소수인 BigInteger를 반환한다'의 의미를 더 잘 설명하는지는 확실히 확인할 수 있을 것이다. 또한..
- Total
- Today
- Yesterday
- 빈 순환 참조
- Spring
- java
- springboot
- 이펙티브 자바
- 연관관계
- jdk버전
- junit
- 점층적 생성 패턴
- 이펙티브자바
- @Lazy
- Effective Java
- flatMap
- 김영한
- try catch finally
- 복사 팩토리
- 자바8
- 생성자
- 인프런
- JPA
- effectivejava
- 빌더 패턴
- mustache
- try with resources
- 스프링부트
- 팩토리 메소드 패턴
- package-private
- ifPresent
- java8
- 정적팩터리메서드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |