Effective Java

개인 공부/스터디

[이펙티브 자바] 상속보다는 컴포지션을 사용하라

🏠 상속보다는 컴포지션을 사용하라 상속은 코드를 재사용하는 강력한 수단이지만, 항상 최선인 것은 아니다. 이번 챕터에서 말하는 상속이란 클래스가 인터페이스를 구현하거나, 인터페이스가 다른 인터페이스를 확장하는 상속은 제외한다. 챕터에서 소개하는 상속은 클래스가 다른 클래스를 확장하는 구현상속을 가르킨다. 일반적으로 패키지 경계를 넘어 상속하는 일은 위험하다고 한다. 💧 상속은 캡슐화를 깨뜨린다. 즉 상위 클래스가 어떻게 구현되냐에 따라 하위 클래스의 동작에 이상이 생길 수 있다는 뜻이다. 캡슐화란 객체의 상태와 행동을 하나의 단위로 묶고, 외부에는 상태를 감추고 행동만을 노출시키는 것이다. 하지만 상속은 하위 클래스가 상위 클래스의 구현에 의존하게 되어, 상위 클래스의 구현이 변경되면 하위 클래스도 영향..

개인 공부/스터디

[이펙티브 자바] 불필요한 객체 생성

🏠 불필요한 객체 생성을 피하라 같은 기능의 객체를 매번 생성하기 보다는, 객체 하나를 재사용하는 편이 나을 때가 많다. String s = new String("bikini"); //호출될 때마다 String 인스턴스 생성 String s = "bikini"; //하나의 인스턴스를 사용하며 JVM 안에서 같은 객체를 재사용함이 보장됨 생성자를 통해, 매번 새로운 객체를 생성하는 것보다는, 정적 팩터리 메서드를 사용해 불필요한 객체 생성을 피하는 것이 좋다. 🔥 생성 비용이 아주 비싼 객체도 있다. static boolean isRomanNumeral(String s) { return s.matches("^ ~)" + "(X[CL ~"); } 위 메서드의 문제점은 String.matches 를 사용하는데..

개인 공부/스터디

[이펙티브 자바] Builder

🏠 생성자에 매개변수가 많다면 빌더를 고려하라. 클래스를 설계하다보면 어떤 인스턴스임에 따라 필드 값이 필수일수도, 필요하지 않을 수도 있다. 이에 대해 모든 걸 고려해서 설계하다보면 생성자가 감당하기 힘들 정도로 많아진다. Builder 패턴이 나오기 전에는 점층적 생성자 패턴을 즐겨 사용했다고 한다. 💊 점층적 생성자 패턴이란 ? 점층적 생성자 패턴(Telescoping Constructor Pattern)은 생성자 오버로딩을 이용하여 객체를 생성하는 패턴이다. 이 패턴은 매개변수가 많은 객체를 생성할 때 유용하지만 매개변수가 많아질수록 코드의 가독성이 떨어지고, 실수할 가능성이 높아진다. public class Pizza { private int size; private boolean cheese;..

Da2isy
'Effective Java' 태그의 글 목록