오브젝트 초반에는 무슨 말인지 몰라서 괜히 읽었다는 생각이 강했다.

그러나 중반이 된 시점부터 저자가 앞에서 깔아놓은 어려운 복선들이 이해가 되기 시작했다.

이번 장은 앞장의 내용들을 법칙이란 이름으로 소개하는 장이다.

1. 개방-폐쇄 원칙(OCP)

소프트웨어 개체(클래스, 모듈, 함수 등)는 확장에 대해 열려 있어야하고, 수정에 대해서는 닫혀있어야 함

확장도 코드 수정이 필요하지 않을까 싶었지만 코드 수정없이 새로운 동작을 추가할 수 있다

충격적이게도 이 원칙은 런타임 의존성과 컴파일타임 의존성에 관한 이야기라고 한다.

아니 이 원칙 어디에 의존성이란 얘기가 있냐고…

발끈 화가 나지만 침착하게 다시 보자.

느낌이 오는가.

런타임 의존성으로 객체들이 협력관계를 가지면 명시적으로 코드를 수정하지 않아도 새로운 모듈을 추가 시 동작 확장이 가능하다는 뜻이다.

런타임 의존성, 그니깐 개방-폐쇄 원칙의 핵심은 추상화에 의존하는 것이다.

추상화란 필요한 부분만 남기고 불필요한 부분은 생략하는 기법이다