목록Effective Java (4)
이것저것
Effective Java [아이템 4 : 인스턴스화를 막으려거든 private 생성자를 사용하라] [모든 클래스가 인스턴화가 필요한 것은 아니다.] 정적 메서드와 필드만을 담을 클래스는 쓸모가 있다. java.lang.Math, java.util.Array 처럼 기본 타입값이나 배열에 관련된 메서드들을 모을 수 있고, java.util.Collections 처럼 특정 인터페이스 구햔 객체를 생성해주는 메서드를 모아 놓을 수도 있다. final 클래스와 관련된 메서드를 모을 때도 마찬가지다. 이를 상속하여 하위클래스에 메서드를 넣는 것이 불가능하기 때문이다. (애초에 상속 불가능) [인스턴스화를 막으려면?] 클래스 내부에 정적 메서드만 있고, 유틸리티 기능을 강조하기 위한 클래스를 하나 만들어보았다. 유..
Effective Java [아이템 3 : private 생성자나 열거 타입으로 싱글턴임을 보증하라] 싱글턴 (Singleton) 이란? : 생성자가 여러번 호출되더라도 실제로 생성되는 객체는 하나이고, 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴 ex) 함수와 같은 무상태(stateless) 객체나 설계상 유일해야하는 시스템 컴포넌트, DBCP 싱클턴 패턴 장점 - 한 번의 객체 생성으로 재사용 가능하므로 메모리 낭비 방지 - 전역성을 갖기 때문에 다른 객체와 공유 용이 싱글턴 패턴 단점 - 클래스를 싱글턴으로 만들면 이를 사용하는 클라이언트를 테스트하기 어렵다. (타입을 interface로 정의한 다음 그 interface를 구현해 만든 싱글턴이 아니라면 싱글턴 인스턴스를 가..
Effective Java [아이템 2 : 생성자에 매개변수가 많다면 빌더를 고려하라] 생성자 (점층적 생성자 패턴) 를 사용하여 인스턴스를 만들때, 매개변수 개수가 많아지면, 클라이언트 코드를 작성하거나 읽기 어려워진다. 매개변수의 순서에 따라 주입되는 값이 달라지고, 매개변수가 추가될 때마다 생성자를 추가로 생성해주어야한다. 이러한 단점을 보완하기 위해, setter 메서드를 호출하여 매개변수의 값을 설정하는 JavaBeans pattern 이 있다. JavaBeans pattern은 가독성은 좋지만, 하나의 객체를 만들기 위해 여러 setter 메서드를 호출해야하고, 객체가 완전히 완성되기 전까지 일관성이 무너진 상태이다. 이 포스팅에서는 Builder pattern만 다뤄본다! Builder Pa..
Effective Java [아이템 1 : 생성자 대신 정적 팩터리 메서드를 고려하라] 클라이언트가 클래스의 인스턴스를 얻는 전통적인 수단 = "public 생성자" 클래스는 생성자와 별도로 정적 팩토리 메서드(static factory method)제공 가능 (static 메서드로 객체 생성을 캡슐화 한다. ex) public static Boolean valueOf(boolean b){ return b ? Boolean.TRUE : Boolean.FALSE; } 위 메서드는 기본 타입인 boolean을 받아 Boolean 객체 참조로 변환 정적 팩토리 메서드의 장점 이름을 가질 수 있다.정적 팩토리는 이름만 잘 지으면 반환될 객체의 특성을 쉽게 묘사할 수 있다. //yunsu가 이름인지 전화번호인지 ..