책/Effective Java

책/Effective Java

[이펙티브 자바] 아이템 20: 추상 클래스보다는 인터페이스를 우선하라

본문은 Effective Java를 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 선결론 일반적으로 다중 구현용 타입엔 인터페이스가 추상 클래스보다 적합하다 인터페이스를 작성할 땐 골격 구현을 함께 제공하는 방법을 고려하자 인터페이스 장점 기존 클래스에도 손쉽게 새로운 인터페이스를 구현해넣을 수 있다 기존 클래스 위에 새로운 추상 클래스를 끼워넣기는 일반적으로 어렵다 인터페이스는 메서드를 추가하고, 클래스 선언에 implements 구문만 추가하면 된다 믹스인(mix) 정의에 안성맞춤이다 믹스인이란 클래스가 구현할 수 있는 타입으로, 대상 타입의 주된 기능에 선택적 기능을 혼합(mixed in)한다는 의미이다 Comparable이 대표..

책/Effective Java

[이펙티브 자바] 아이템 19: 상속을 고려해 설계하고 문서화하라. 그러지 않았다면 상속을 금지하라

본문은 Effective Java를 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 선결론 상속용 클래스를 설계하기란 어렵다 따라서 상속이 분명하게 필요한 것이 아니라면 금지하라 상속용 클래스를 설계하는 데 드는 어려움 문서화를 해야한다 재정의할 수 있는 메서드들을 호출할 수 있는 모든 상황을 문서로 남겨야 한다 이때, 다음과 같이 @implSpec 태그를 이용하여 불필요하게 내부 구현 방식을 설명해야 한다 내부 구현에서 사용되는 메서드를 잘 선별하여 protected 메서드 형태로 공개해야 할 수 있다 protected 메서드 하나하나가 모두 내부 구현에 해당하므로 이는 캡슐화를 위반함 게다가 추가해야 할 protected 멤버를 놓칠..

책/Effective Java

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

본문은 Effective Java를 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 선결론 이번 챕터에서 말하는 상속은 '클래스가 다른 클래스를 확장하는' 구현 상속을 말한다 상속은 상위 클래스와 하위 클래스가 순수한 is-a 관계이면서 다음의 사항을 모두 따를 때 사용해야 한다 상위 클래스의 패키지와 하위 클래스의 패키지가 동일할 경우 상위 클래스가 확장할 목적으로 설계되었고 문서화가 잘 되어 있을 경우 따라서 취약점이 많은 상속 대신 컴포지션과 전달을 사용하라 상속의 단점 상속은 캡슐화를 깨뜨린다 상위 클래스의 내부 구현이 변경되면 하위 클래스의 동작에 이상이 생길 수 있다 상위 클래스에 변경이 발생하면 하위 클래스에서도 이에 따른 ..

책/Effective Java

[이펙티브 자바] 아이템 17: 변경 가능성을 최소화하라

본문은 Effective Java를 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 선결론 클래스는 꼭 필요한 경우 외엔 불변이어야 한다 모든 클래스를 불변으로 만드는 것은 사실상 불가능하므로 가변 클래스라도 변경할 수 있는 부분을 최소한으로 줄여야 한다 즉, 다른 합당한 이유가 없다면 모든 필드는 private final이어야 한다 생성자는 불변식 설정이 모두 완료된, 초기화가 완벽히 끝난 상태의 객체를 생성해야 한다 불변 클래스의 장단점 장점 단순하다 가변 객체보다 부수효과에서 자유롭기 때문에 사용하기 쉽다 스레드 안전하고 따로 동기화할 필요가 없다 즉, 불변 객체는 자유롭게 공유할 수 있다 이때, 불변 클래스의 인스턴스는 정적 팩터..

책/Effective Java

[이펙티브 자바] 아이템 16: public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라

본문은 Effective Java를 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 선결론 public 클래스에서 필드를 직접 노출하는 것을 지양하라 package-private 클래스와 private 클래스에서는 필드를 노출하는 편이 나은 경우도 있다 public 클래스 public 클래스에서 데이터 필드에 직접 접근하게 되면 캡슐화의 이점을 누리지 못함 API를 변경하지 않고서는 클래스 내부 표현을 바꿀 수 없음 즉, public 클래스가 필드를 공개하면 이를 사용하는 클라이언트가 있으므로 내부 표현을 유연하게 바꾸지 못함 외부에서 필드에 접근할 때 부수작업을 수행할 수 없음 따라서 필드를 모두 private으로 바꾸고 public ..

코택
'책/Effective Java' 카테고리의 글 목록 (8 Page)