Tag: Effective Java

불필요한 객체 생성을 피해라

요약 변경되지 않는 객체를 사용할 때마다 새로운 객체를 만들지 말자. 불필요한 객체 생성을 하는 예시String12String bad = new String("bikini"); //안좋은 예시String good = "bikini"; //무난한 예시 new String(“bikini”)로 문자열을 만드는 경우 불필요

자원을 직접 명시하지 말고 의존 객체 주입을 사용하라

요약 클래스가 내부에 특정 자원에 의존하고, 그 클래스의 행동이 특정 자원에 따라 영향을 많이 받으면, 싱글톤과 정적 유틸리티 클래스로 구현하면 안된다.이런 영향력이 있는 자원을 클래스 내부에서 만들면 안된다.대신 이 자원(혹은 자원을 만드는 팩토리)을 해당 클래스를 인스턴스화 할 때 넘겨주자. 자원을 직접 명시하는 잘못된 예시 - 정적 유틸리티 &am

인스턴스화를 막으려거든 private 생성자를 사용해라

인스턴스화하지 않으려는 클래스?객체지향적이지 않지만 필요할 때가 있다.java.lang.Math, java.util.Array 같이 기본 타입 값이나 배열 관련 메서드를 모아둔 곳java.util.Collections와 같이 특정 인터페이스를 구현한 객체를 생성하는 정적 메서드를 모아둔 곳.final 클래스와 관련된 메서드를 모아놓을 때. (final 클래

private 생성자나 열거 타입으로 싱글턴임을 보증하라

싱글턴의 단점싱글턴은 인스턴스를 하나만 생성할 수 있는 클래스를 말한다.그런데 이 싱글턴 클래스를 사용하는 클라이언트를 테스트하기 어렵다.특히 인터페이스를 구현하는 방식으로 만들어진 싱글턴이 아니면 mock 객체로 테스트 하기 어렵다. mock객체? 테스트하고 싶은 객체의 핵심 책임만 검증할 수 있도록 만들어진 객체이다.원래 객체가 수많은 협력을 하고

생성자에 매개변수가 많으면 빌더를 고려하자

점층적 생성자 패턴자바빈즈 패턴빌더 패턴 점층적 생성자 패턴클래스에 멤버 변수가 많다면, 수많은 생성자(점층적 생성자 패턴)가 가능하다. 12345678910class Clazz{ int a; double b; String c; .... public Clazz(int a){} public Clazz(int a, doub

생성자 대신 정적 팩터리 메서드를 고려하라.

정적 팩터리 메서드란 무엇인가정적 팩터리 메서드의 장점은 무엇인가정적 팩터리 메서드의 단점은 무엇인가정적 팩터리 메서드 네이밍 컨벤션 일반적으로 public 생성자를 통해 클래스의 인스턴스를 만든다.하지만 정적 팩터리 메서드를 통해 만들면 여러 이점이 있다. 정적 팩터리 메서드란 무엇인가?static으로 선언되었고, 객체를 반환하는 메서드를 말한다. 책에