YUYANE

Java/ 상속 vs 컴포지션 본문

Programming Languages/JAVA

Java/ 상속 vs 컴포지션

YUYA 2020. 12. 16. 17:20

상속 vs 컴포지션 

1) 공통

 - 재사용성이 목적

 - 많은 경우에 두 가지 모두 사용 가능

 

2) 성능이 중요한 경우

 - 상속 : 개체 생성 시, 메모리가 하나의 덩어리(초기화를 한 번만 하므로)

 - 컴포지션 : 개체 생성 시, 메모리가 여러 덩어리

 -  메모리 상의 차이는 실행 성능에 영향을 미친다. 개체가 여러 메모리로 나뉘어져 있으면 속도가 느려짐

 이유 : cpu는 메모리로부터 데이터를 받아와 연산한다.

   - 상속 모델로 만든 개체 : 개체가 한 번에 캐시 메모리에 들어갈 가능성이 높음

   - 컴포지션 모델로 만든 개체 : 개체 내 부품 수 만큼 캐시 메모리로 로딩할 가능성이 높음

 - 프로그래밍 언어에 따라 새로운 메모리를 할당하고 해제하는 것에 있어서 특히 느린 것이 있음

   - 상속 : 메모리 할당/해제가 딱 한 번씩

   - 컴포지션 : 한 번 + 부품 수 만큼씩

 - 결론 : 성능이 중요한 경우에는 상속을 사용하는 것이 낫다.

 

3) 자식 개체들에 한꺼번에 명령을 내리고 싶을 때

  - 상속 사용

 

4) 일반적인 경우

  - 상식적으로 생각할 것

  - has-a 와 is-a 관계에 충실하자(다만, 본인이 아는 정도에 따라서 상속/컴포지션이 나뉠 수 있다)

 

** 때로는 둘 다 사용할 수도 있다

'Programming Languages > JAVA' 카테고리의 다른 글

Java/ final  (0) 2020.12.22
Java/ 다형성(polymorphism)  (0) 2020.12.22
Java/ 재사용성  (0) 2020.12.16
Java / 중복되는 상태는 지우자  (0) 2020.12.15
Java/ Base Entity  (0) 2020.12.14
Comments