티스토리 뷰
개방-폐쇄 원칙 ?
개방-폐쇄 원칙 예제
References
개방-폐쇄 원칙 ?
소프트웨어 개체(클래스, 모듈, 함수 등등)는 확장에 대해 열려 있어야 하고, 수정에 대해서는 닫혀 있어야 한다.
위키백과에 간단명료하게 정리되어있어 인용을 하자면,
확장에 대해 열려 있다.
이것은 모듈의 동작을 확장할 수 있다는 것을 의미한다.
애플리케이션의 요구 사항이 변경될 때, 이 변경에 맞게 새로운 동작을 추가해 모듈을 확장할 수 있다.
수정에 대해 닫혀 있다.
모듈의 소스 코드나 바이너리 코드를 수정하지 않아도 모듈의 기능을 확장하거나 변경할 수 있다.
개인적으로 확장과 수정을 따로 생각하지 않는 것이 이해가 잘 되었다.
확장성을 고려하여 설계함으로써 수정사항이 발생하였을 시 이미 설계된 모듈에서의 수정을 적게 하도록 하여라 라는 뜻으로 이해했다.
위 설계를 보면 PostgreSQL, Oracle, Sybase Database에 모두 확장적(개방)이면서 자바어플리케이션입장에서 수정은 폐쇄적인 것 임을 알아야 한다.
개방-폐쇄 원칙 예제
여러 예제들이 구글링으로 나오지만, 수정에 대해 닫혀있다 에 대해 개인적으로 만족스러운 설명이나 예제가 부족해 보여서 찾던 중
좋은 예제를 발견하여 링크 남긴다.
[참고 : https://shas15.github.io/solid-o/ ]
References
https://shas15.github.io/solid-o/
https://ko.wikipedia.org/wiki/%EA%B0%9C%EB%B0%A9-%ED%8F%90%EC%87%84_%EC%9B%90%EC%B9%99
'프로그래밍 > 프로그래밍' 카테고리의 다른 글
DI : Dependency Injection ( 의존성 주입 ) (0) | 2019.09.16 |
---|---|
선언형 / 명령형 프로그래밍 (0) | 2019.08.25 |
단일 책임 원칙 (Single Responsibility Principle, SRP) (0) | 2019.03.10 |
객체 지향 설계 (SOLID) (0) | 2019.03.03 |
리스코프 치환 원칙(Liskov substitution principle, LSP) (0) | 2019.03.03 |