목록책/Effective Java 3 (3)
dev.Log
[점층적생성자패턴] 장점 : 매개변수가 유효한지를 생성자에서만 확인하면되서 일관성을 유지하기 쉽다. 단점 : 매개변수의 개수가 많아지면 클라이언트 코드를 작성하거나 읽기 어렵다. [자바빈즈패턴] 선택 매개변수가 많을 때 자바빈즈패턴을 활용할 수 있다. 매개변수가 없는 생성자로 객체를 만든 후, 세터 메서드를 호출해 원하는 매개변수의 값을 설정하는 방식이다. 장점 : 코드가 길어지긴 했지만 인스턴스를 만들기 쉽고, 그 결과 더 읽기 쉬운 코드가 된다. 단점 : 객체 하나를 만들려면 메서드를 여러개 호출해야 하고, 객체가 완전히 생성되기 전까지는 일관성이 무너진 상태에 놓인다. [빌더패턴] 점층적 생성자 패턴과 자바빈즈 패턴의 장점만 취했다. 단점 : 객체를만드려면 그에앞서 빌더부터 만들어야 하는데, 빌더 ..
정적 팩터리 메서드는 [장점] 1. 이름을 가질 수 있다. 한 클래스에 시그니처가 같은 생성자가 여러개 필요하다면, 생성자를 정적팩터리 메서드로 바꾸고 각각의 차이를 잘 드러내는 이름을 지어주자 2. 호출 될 때마다 인스턴스를 새로 생성하지는 않아도 된다. 3. 반환 타입의 하위 타입 객체를 반환할 수 있는 능력이 있다. 4. 입력 매개변수에 따라 매번 다른 클래스의 객체를 반환할 수 있다. 5. 정적 팩터리메서드를 작성하는 시점에는 반환할 객체의클래스가 존재하지 않아도 된다. [단점] 1. 상속을 하려면 public이나 protected 생성자가 생성자가 필요하니 정적 팩터리 메서드만 제공하면 하위 클래스를 만들 수 없다. 2. 정적 팩터리 메서드는 프로그래머가 찾기 어렵다.
[중요한 것] 1. 명료성과 단순성 2. 컴포넌트는 가능한 작게 3. 재사용 가능하게 4. 의존성은 최소로 5. 오류는 최대한 빨리 해결할 것 [자바의 타입] 1. 인터페이스 - 어노테이션 2. 클래스 - 열거타입 3. 배열 4. 기본타입(primitive) => 1,2,3은 참조타입(객체)이지만, 기본타입은 객체가 아니다. [API란] 프로그래머가 클래스, 인터페이스, 패키지를 통해 접근할 수 있는 모든 클래스, 인터페이스, 생성자, 멤버, 직렬화된 형태를 말한다. Q. 직렬화란? 자바직렬화란 자바 시스템 내부에서 사용되는 "객체 또는 데이터"를 외부의 자바시스템에서도 사용할 수 있도록 "바이트형태로 변환"하는 기술과 변환된 데이터를 "다시 객체로 변환"하는 기술 EX) 문자열 형태의 직렬화 방법에 C..