class, abstract가 확장성에 안좋은 이유
1.
기능을 확장시켜 만들려면 상속으로는 너무 긴 여정이 필요하다.
2.
abstract 도 동일하다. 하나만 상속 받을 수 있기 때문에
1. A 기능에 1이라는 기능이 있다. 2라는 기능을 추가하고 싶다. 그럼 A extends B B에 2 기능 정의
2. 3이라는 기능 동일하게 추가 C extends B 3기능정의
3. 4 도 똑같이 D
그럼 다중상속이 불가능한 class의 경우 상속 체인이 엄청나게 길어짐
A <- B <- C <- D <- .... Z 까지 기능 추가가 힘들어짐 하나 추가하는데 한세월
이건 유지보수하는 입장에서 헬임
하지만 인터페이스는?
1. 1 기능에 대응하는 A 만들면됨
2. 상동 2 기능 B
3. 상동 3 기능 C
4. 상동 4 기능 D
5. 상동 5 기능 E
결국 기능이 필요할때
class 최종 implements A, B, C, D, E 해주면 기능 추가가 편해짐
토비에 스프링에서 class 의 상속보다 interface를 사용하는 것이 더 확장성에 유리하다는 의미
즉, 상속이 많아지면 그만큼 클래스가 많아서 유지보수하기 힘들어지고 길어지는 상속구조를 파악하기 힘들어짐
그럼 abstract와의 비교(interface)
추상으로 두고 체이닝하면 되는 것 아닌가?
이것도 똑같이
길어짐 결국 중간에 고장나면 고장난 케이스를 찾아가는 여정을 해야함
반성
1.
너무 개념에 집중 했다. 머리속이 어지럽네.
a.
is-a has-a 를 물어본건 아니다. 확실히 문맥을 파악못했다.
2.
처음 설명하려던걸 너무 장황하게 설명했다.
a.
1,2,3 기능과 스위치는 에바쌈바였다. 왜냐 저 설명이 짬뽕이 되서 설명되었기 때문에
3.
상속을 설명해야지 상속과 interface의 차이를 설명하고 있었다. 완전 틀린거
4.
자꾸 어려운걸 설명하려했다. 개념적이고 사용해야하는 곳!!!은 저세상 이야기다 지금 물어본건 근본적으로 확장성에 대한이야기뿐이다 딴이야기했다
5.
못하면 맞으면서 배우자