[5단원]5원칙 - OCP

정의

  • 소프트웨어 엔티티는 확장에 열려있어야하고
  • 변경에 대해서는 닫혀 있어야 한다.

    새로운 기능을 추가하거나 코드를 수정하는 경우

    기존 코드에 최소한의 변경을 주는 것을 목표로 해야한다.

예시

  • 마티즈, 쏘나타라는 두 종류의 자동차 존재
  • 마티즈
    • 수동 기어
    • 수동 창문
  • 쏘나타
    • 자동 기어
    • 자동 창문
  • 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