개발/JAVA3 [Java] [이펙티브 자바][02] 생성자에 매개변수가 많다면 빌더를 고려하라 서론 정적 팩터리와 생성자는 선택적 매개변수가 많을 때 적절히 대응하기 어렵다. 선택적 매개변수가 많을 때 방법 점층적 생성자 패턴 매개변수가 많아지면 코드를 작성하거나 읽기 어렵다 자바 빈즈 패턴 (setter 메서드 호출) 객체 하나 만들기 위해, 메서드 여러번 호출 객체가 완전히 생성되기 전까지 일관성이 무너진 상태에 놓임 빌더 패턴 필요한 객체를 직접 만드는 대신, 필수 매개변수만으로 생성자(or 정적팩토리 메서드)를 호출해 빌더 객체를 얻는다. 빌더 객체가 제공하는 일종의 setter 메서드들로 원하는 선택 매개변수들을 설정 최종적으로 build 매서드를 호출해 불변인 객체를 얻는다. 핵심 정리 생성자나 정적 팩터리가 처리해야 할 매개변수가 많다면 빌더 패턴을 선택하는게 더 낫다. 점층적 생성자.. 2022. 12. 27. [Java] [이펙티브 자바][01] 생성자 대신 정적 팩토리 메서드를 고려하라 정적 팩토리 메서드 사용의 장점 5가지 이름을 가질 수 있다 이름만 잘 지으면 반환될 객체의 특성을 쉽게 묘사할 수 있다. (ex: BigInteger.probablePrime = 값이 소수인 BigInteger를 반환한다.) 호출될 때 마닥 인스턴스를 새로 생성하지 않아도 된다. 같은 객체가 자주 요청되는 상황이라면 성능을 상당히 끌어올려 준다. 반환 타입의 하위 타입 객체를 반환할 수 있는 능력이 있다. 반환할 객체의 클래스를 자유롭게 선택할 수 있는 유연성 입력 매개변수에 따라 매번 다른 클래스의 객체를 반환 할 수 있다. 반환 타입의 하위 타입이기만 하면 어떤 클래스의 객체를 반환하든 상관없다. 정적 팩토리 메서드를 작성하는 시멎ㅁ에는 반환할 객체의 클래스가 존재하지 않아도 된다. 서비스 제공자 .. 2022. 12. 27. [Java] 스터디 01 1. Java 기본 참고: (1) 객체지향 객체지향의 3요소 Encapsulation (캡슐화) - 의미: 객체의 속성(data fields)과 행위(메서드, methods)를 하나로 묶고, 실제 구현 내용 일부를 외부에 감추어 은닉한다. - 캡슐화의 방법 1. 표준을 따르게 한다 (공통 상위클래스/인터페이스) 2. 필드자체가 아닌 메서드를 이용해 노출(getter 메서드) 3. 접근제어자 활용(public, private, protected, default) - 캡슐화의 이점 1. 클래스의 필드 값에 대한 수정 권한을 설정 가능하다. - 조회만 가능(read-only)하게 하거나 수정만 가능(write-only)하게 만들 수 있다. 2. 필드에 저장된 모든 값들을 컨트롤 할 수 있다. -클래스의 변수 .. 2022. 12. 27. 이전 1 다음