JavaBookStudy / JavaBook

책읽기 스터디
https://javabookstudy.github.io/
Apache License 2.0
19 stars 2 forks source link

[토비의 스프링] 3.1 개방 폐쇄 원칙 #75

Closed taxol1203 closed 3 years ago

taxol1203 commented 3 years ago

209p 3.1 들어가기 전 두번째 문단에서,

개방 폐쇄 원칙은 코드에서 어떤 부분은 변경을 통해 그 기능이 다양해지고 확장하려는 성질이 있고, 어떤 부분은 고정되어 있고 변하지 않으려는 성질이 있다

라고 되어있습니다.

우선 개방 폐쇄 원칙은

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

라고 알고있는데, 위 문장에서 변경을 통해 기능이 다양해 진다는 것이 정확이 이해가 되질 않습니다.

위에서 말하는 변경은 변경에 맞게 새로운 행위를 추가해서 모듈을 확장한다는 뜻으로 쓰여진 것일까요?

또한, 개방 폐쇄 원칙으로 각 코드의 부분에서 변하거나 변하지 않으려는 성질이 있다는 것도 이해가 되질 않습니다.

개방 폐쇄 원칙이란?

daebalprime commented 3 years ago
  1. 제가 이해하는 OCP는 자주 변하는 부분과 변하지 않는 부분을 분리해, 변하는 부분이 변하지 않는 부분에 영향을 주지 않도록, 즉 결합도를 낮추도록 코딩하라는 원칙이라고 이해했습니다. 이를 위해 변하는 부분은 전략으로, 변하지 않는 부분은 컨텍스트로 나누어 DI하는 방법을 3장 내내 설명하고 있습니다.
  2. 변하거나 변하지 않는 성질은, JDBC 코드 예시에서 자세히 설명이 되었습니다. 예외 처리, PreparedStatement, 자원 반환 등 JDBC를 이용해 어떤 쿼리를 날리더라도 반복되어 나타나기 때문에 그 부분을 재사용하고자 작성하는 코드들이 변경이 되지 않는 성질을 가지고 있다고 말할 수 있습니다. 그러나 쿼리문은 항상 변하는 성질을 가지고 있다고 말할 수 있습니다.