정의
- 소프트웨어 엔티티는 확장에 열려있어야하고
- 변경에 대해서는 닫혀 있어야 한다.
새로운 기능을 추가하거나 코드를 수정하는 경우
기존 코드에 최소한의 변경을 주는 것을 목표로 해야한다.
예시
- 마티즈, 쏘나타라는 두 종류의 자동차 존재
- 마티즈
- 수동 기어
- 수동 창문
- 쏘나타
- 자동 기어
- 자동 창문
- OOP 세계에서는 자동차 종류마다 기능을 변경하지 않고도 활용가능
// 마티즈를 운전할 때
driver.operateGearManual();
driver.openWindowManual();
// 쏘나타를 운전할 때
driver.operateGearAuto();
driver.openWindowAuto();
가 아니라
// 어떤 차를 운전하든 간에
driver.operateGear();
driver.openWindow();
가 되어야 확장에 유리함.
- 원래 OOP에서는 기어나 창문의 조작이 바뀌더라도, 운전자에 대한 코드를 바뀌지 않는 것이 이상적.
JDBC 와 OCP 와 관계
JDBC 역할
- Java Database Connectivity
- 자바 언어에서 데이터 베이스에 접근할 수 있도록 도와주는 API
- DB의 종류에 상관없이 동일한 인터페이스로 DB 접근, 조작가능
DB 변경 유연성
- JDBC 사용시 클라이언트는 DB가 오라클 → MYSQL 변경시, Connection 설정외에는 코드 수정이 불필요
- 개방 폐쇄 의 원칙을 잘 지킨 사례
다른 라이브러리와 프레임워크
- 하이버네이트, Mybatis, iBatis 등과 같은 DB 라이브러리도 OCP 확인가능
자바 OCP
운영체제 호환
- 자신의 코드가 어떤 운영체제에 실행될지 걱정 X
- 각 운영체제 별로 JVM 이 있기에, 코드가 운영체제 변화에 닫혀있음.
- JVM 은 확장에 열려있음
- 앞으로 OS 가 추가적으로 등장한다면, 레고마냥 조립이 가능
현실세계의..
- 직원이 변경되어도 손님의 구매 행위 자체에 영향을 주지 않는다.
- 직원이
교대
와 같은 확장에는 열려있지만, 손님의 구매 행위에 대해 닫혀있음.
Uploaded by N2T
'자바 > 스프링입문객체지향' 카테고리의 다른 글
[5단원]5원칙 - SOLID (0) | 2023.09.10 |
---|---|
[5단원]5원칙 - SRP (0) | 2023.09.10 |
[4단원]this 키워드 (0) | 2023.09.04 |
[4단원]super 키워드 (0) | 2023.09.04 |
[4단원]Package 키워드 (0) | 2023.08.31 |