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

컨텐츠 검색

태그

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

최근글

댓글

공지사항

아카이브

Composition(1)

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

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

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

티스토리툴바