📔
Today Joonas Learned
  • Home
  • About Me
  • Chrome Extension
    • CSS injection
  • Design Pattern
    • SOLID 원칙
      • 1. SRP
      • 2. OCP
      • 3. LSP
      • 4. ISP
      • 5. DIP
    • 생성 패턴
      • Singleton Pattern
      • Abstract Factory Pattern
      • Factory Method Pattern
    • 구조 패턴
      • Adapter Pattern
      • Bridge Pattern
      • Composite Pattern
      • Decorator Pattern
      • Facade Pattern
      • Proxy Pattern
    • 행위 패턴
      • Command Pattern
      • Observer Pattern
      • State Pattern
      • Strategy Pattern
      • Template Method Pattern
  • Graphics
    • OpenGL ES
      • 파이프라인
      • 삼각형 그리기
      • 삼각형 움직이기
      • 다각형 그리기
      • 정사면체 그리기
      • [WIP] 마인크래프트 블럭 만들기
      • [WIP] Lighting, Normal Mapping
  • Internet
    • iOS/Safari
  • Javascript
    • async, defer 속성
    • 나머지 매개변수 (Rest parameter)
    • 화살표 함수 표현 (arrow function expression)
    • Template Literals
    • TDZ (Temporal Dead Zone)
    • Spread syntax (...)
  • Network
    • OSI 7 계층 모델
  • Uncategorized
    • 2021/12/07
    • 2020/09/03
    • 2020/09/04
    • 2020/08/22
  • git/VCS
    • Merge 커밋 메시지 수정
Powered by GitBook
On this page
  • Open/Closed Principle (OCP; 개방-폐쇄 원칙)
  • 확장에 대해 열려 있다.
  • 수정에 대해 닫혀 있다.
  • 추상화
  • Links

Was this helpful?

  1. Design Pattern
  2. SOLID 원칙

2. OCP

Open/Closed Principle (OCP; 개방-폐쇄 원칙)

Open/Closed Principle (OCP; 개방-폐쇄 원칙)

소프트웨어 요소는 확장에는 열려 있으나, 변경에는 단혀 있어야 하다.

모듈 중 하나를 수정했는데, 그 모듈을 사용하는 모든 모듈의 코드를 수정하는 일이 있으면 안된다는 뜻이다.

조금만 떠올려봐도 얼마나 끔찍한 일인 지 알 수 있다.

확장에 대해 열려 있다.

이것은 모듈의 동작을 확장할 수 있다는 것을 의미한다.

애플리케이션의 요구 사항이 변경될 때, 이 변경에 맞게 새로운 동작을 추가해 모듈을 확장할 수 있다. 즉, 모듈이 하는 일을 변경할 수 있다.

수정에 대해 닫혀 있다.

모듈의 소스 코드나 바이너리 코드를 수정하지 않아도 모듈의 기능을 확장하거나 변경할 수 있다.

그 모듈의 실행 가능한 바이너리 형태나 링크 가능한 라이브러리 (예를 들어, Windows의 DLL, 자바의 jar ...)를 건드릴 필요가 없다.

추상화

객체 지향 프로그래밍 언어에서는 "추상화"를 통해서 가능할 수 있다.

추상화 클래스나 인터페이스를 만들어, 상위 클래스는 수정할 수 없도록 만들되 서브 클래스에서는 기능을 추가하여 확장할 수 있도록 만들기 때문이다.

Links

Previous1. SRPNext3. LSP

Last updated 4 years ago

Was this helpful?

https://ko.wikipedia.org/wiki/SOLID_(객체_지향_설계)
https://ko.wikipedia.org/wiki/개방-폐쇄_원칙