Progrow

Progrow

  • 분류 전체보기 (366)
    • Programming Languages (47)
      • JavaScript (13)
      • Java (18)
      • Effective Java (3)
      • Kotlin (11)
      • C++ (1)
      • Groovy (1)
    • Computer Sciences (237)
      • Problem Solve (155)
      • Datastructure (2)
      • Database (20)
      • OS (8)
      • Network (5)
      • Security (10)
      • Design Patterns (19)
      • Compiler (8)
      • BigData (5)
      • OOP (5)
    • Spring (21)
      • Boot (7)
      • Security (7)
      • JPA (6)
      • Session (1)
    • Frontend (10)
      • HTML (2)
      • CSS (3)
      • Vue.js (4)
    • Web (4)
      • REST API (2)
      • Servlet (1)
    • Devops (26)
      • Docker (0)
      • Kubernetes (1)
      • AWS (25)
      • Jenkins (0)
      • Terraform (0)
    • Build Tools (6)
      • Gradle (6)
    • App (1)
      • Android (1)
    • Project (4)
      • DI Framework (3)
      • Capstone Design (1)
    • Redis (1)
    • git (0)
    • etc (9)
      • IT 상식 (4)
      • IT 행사 (2)
      • Heroku (2)
      • vscode (1)
  • 홈
  • 태그
  • 방명록
  • github
RSS 피드
로그인
로그아웃 글쓰기 관리

Progrow

컨텐츠 검색

태그

AWS BAEKJOON 투 포인터 Java Design Pattern programmers 정보보호 JavaScript greedy 백준 dfs Head First Design Pattern 프로그래머스 BFS String 정보보안 DP database 데이터베이스 Kotlin Java

최근글

댓글

공지사항

아카이브

Composition(1)

  • [Effective Java] item 18. 상속보다는 컴포지션을 사용하라

    상속은 코드를 재사용하는 강력한 수단이지만 잘못 사용하면 오류를 만들어내기 쉬운 소프트웨어가 된다. 슈퍼 클래스와 서브 클래스가 같은 프로그래머에 의해 다루어지며 통제하는 경우는 안전하다. 확장할 목적으로 잘 설계되었고 문서화도 잘 된 클래스 또한 안전하다. 그러나 외부 패키지에서 이를 상속하는 경우 문제가 발생한다. 메서드 호출과 달리 상속은 캡슐화를 깨뜨린다. 다르게 말하면 슈퍼 클래스가 어떻게 구현되었느냐에 따라 서브 클래스의 동작에 문제가 생길 수 있다. 슈퍼 클래스는 버전마다 내부 구현이 달라질 수 있다. 이때문에 확장을 충분히 고려하여 설계하지 않거나 문서화가 부족한 경우 이를 상속하는 서브 클래스들은 이에 발맞춰서 코드를 수정해야 하는 불상사가 생긴다. 구체적인 예제를 살펴보자. HashSe..

    2021.11.26
이전
1
다음
티스토리
© 2018 TISTORY. All rights reserved.

티스토리툴바