본문 바로가기

Java56

Effective Java #02 private 생성자나 enum 자료형은 싱글턴 패턴을 따르도록 설계하라. 싱글턴은 객체를 하나만 만들 수 있는 클래스를 뜻한다. JDK 1.5 이전에는 싱글턴을 구현하는 방법이 두 가지라고 한다. (현재 글을 쓰고 있는 시점에 JDK 버전은 1.8까지 나온 것 같다.) 1234567//public final 필드를 사용한 싱글턴public class Elvis{ public static final Elvis INSTANCE = new Elvis(); private Elvis() {...} public void leaveTheBuilding() { ...}}Colored by Color Scriptercs 123456789//정적 팩터리를 이용한 싱글턴public class Elvis{ private static final Elvis INSTANCE = new Elvis(); .. 2016. 4. 13.
Effective Java #02 생성자 인자가 많을 때는 Builder 패턴 적용을 고려하라. 책에 나온 예문을 추려보면 다음과 같다. 1회 제공 칼로리에 지방, 포화 지방, 트랜스 지방, 콜레스테롤, 나트륨 등이 있는데 이런 클래스에는 어떠한 생성자나 정적 팩터리 메서드가 적합할까? 보통 프로그래머들은 이런 상황에는 다음과 같은 점층적 생성자 패턴 패턴을 적용한다고 한다.점층적 생성자 패턴은 다음과 같다. 123456789101112131415161718192021222324252627282930313233343536373839public class NutritionFacts{ //자바에서 final은 변수면 C#으로는 readonly이며 //함수에 final을 사용할 경우 상속 시, override를 사용할 시 오류가 난다. private final int servingSize; //(mL) .. 2016. 4. 12.
Effective Java #01 생성자 대신 정적 팩터리 메서드를 사용할 수 없는지 생각해 보라 이제 책을 처음 넘겨보도록 했다. 첫 장은 클래스를 처음 생성할 때, 사용할 수 있는 생성자를 대신하여 정적 팩터리 메서드를 사용할 수 없는지 생각해보라는 것이었다. 이 문제가 나온 이유는 다음과 같다. 클래스를 객체로 생성할 때, 매개변수가 동일한 생성자는 하나만 구현할 수 있다.결국 클래스에 여러 생성자를 구현하기 위해서는 생성자의 매개변수 순서를 바꾸거나, 매개변수를 계속 추가하여야 하고 결국 나중에 사용하는 사람은생성자 중 어떤 것을 사용하여야 할 지 몰라 원하는 기능을 사용할 수 없기 때문이다. 장점으로는 다음과 같이 설명한다.1. 정적 팩터리 메서드는 이름을 가지고 있으므로 추상적으로 짓는다면 어떠한 기능을 하는지 알 수 있다.2. 생성자와는 달리 새로운 객체를 생성할 필요는 없다고 한다. (.. 2016. 4. 11.
Effective Java #00 이펙티브 자바에 대해 공부하기 전에... 필자는 만 5년 5개월 동안 C# 및 VB.NET을 공부해왔으며, 자바는 안드로이드만 5일 동안 공부해본 적이 있는 자바 초보다. ^^ C#을 공부하기 전 코드 컴플리트를 읽어 도움이 되었던 것처럼 자바를 공부하기에 앞서 이펙티브 자바를 통해 도움을 얻고자 한다. 하루에 한 번이 될지 일주일에 한 번이 될지 공부한 내용을 착실히 써 내려가고자 한다. 2016. 4. 11.