Effective Java - 상속과 합성

2022. 11. 28. 14:31·Book/DEV

상속보다는 합성을 우선시하자

상속은 도형 - 동그라미 관계에서 도형은 각, 면적, 기타 등의 필드가 존재한다.

상속은 캡슐화를 깨트릴 우려가 있다.

➡️ 캡슐화가 깨진다? : 상위 클래스를 수정하였을 때 하위 클래스에 미치는 영향이 생긴다는 뜻에서 캡슐화가 깨진다고 묘사

또한 상속을 이용하게 되면 상위 클래스에 변경이 생기게 될 경우 상속받은 모든 하위 클래스에서 변경이 일어난다.

순수한 is-a 관계에서만 상속을 사용하고, 그 외의 경우에는 합성을 사용하는 것이 바람직하다

 

자바 9 이상부터 정적 팩토리 메서드를 지원한다. Arrays.asList 안 쓰고 List.of, Map을 새로 생성 할 때는 Map.of을 사용하자.

다만 불변 객체가 되기 때문에 UnsupportedOperationException을.. 만나게 될 수도 있다^^

 

중간에 전달 클래스를 만들어서 사용하자. 다른 인스턴스를 감싸고 있기 때문에 이를 래퍼 클래스라 부른다.

 

합성을 권장하지 않는 환경 - 콜백 프레임워크

bec. 자기 자신의 참조를 다음 객체에 넘겨서 다음 호출 때 사용하도록 한다. 그러나 해당하는 타입이 정확히 구현체인 하위 클래스인지 명시할 수 없어지는 문제가 생긴다.

저작자표시 비영리 변경금지 (새창열림)

'Book > DEV' 카테고리의 다른 글

오브젝트 (3)  (0) 2025.04.09
오브젝트 (2)  (0) 2025.04.08
오브젝트 (1)  (1) 2025.04.01
만들면서 배우는 클린 아키텍쳐 (2)  (0) 2025.03.14
만들면서 배우는 클린 아키텍쳐  (1) 2024.12.11
'Book/DEV' 카테고리의 다른 글
  • 오브젝트 (2)
  • 오브젝트 (1)
  • 만들면서 배우는 클린 아키텍쳐 (2)
  • 만들면서 배우는 클린 아키텍쳐
코드파고
코드파고
  • 코드파고
    Digging Code
    코드파고
  • 전체
    오늘
    어제
    • 분류 전체보기 (99)
      • Memorization (12)
      • Spring (18)
      • Java (1)
      • Algorithm (40)
      • Server (2)
      • DB (0)
      • CS (0)
      • CI & CD (4)
      • Architecture (0)
      • Design Patterns (0)
      • Study (1)
      • Book (9)
        • DEV (7)
        • Non-DEV (0)
      • Infra (1)
        • Kafka (6)
        • AWS (4)
      • TroubleShooting (1)
        • Etc (1)
      • Tools (0)
  • 블로그 메뉴

    • 홈
    • Github
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Spring
    헥사고날아키텍쳐
    Spring독학
    SpringFramework
    Spring Boot
    Clean Code
    클린아키텍쳐
    architecture
    clean architecture
    알고리즘
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
코드파고
Effective Java - 상속과 합성
상단으로

티스토리툴바