[Object] 개방-폐쇄 원칙(Open-Closed Principle, OCP)

업데이트:

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

  • 확장에 대해 열려 있다: 애플리케이션의 요구사항이 변경될 때 이 변경에 맞에 새로운 ‘동작’을 추가해서 애플리케이션의 기능을 확장할 수 있다.

  • 수정에 대해 닫혀 있다: 기존의 ‘코드’를 수정하지 않고도 애플리케이션의 동작을 추가하거나 변경할 수 있다.

추상화가 핵심이다.

개방-폐쇄 원칙의 관점에서 핵심은 추상화에 의존하는 것 이다. 개방-폐쇄 원칙의 관점에서 생략되지 않고 남겨지는 부분은 다양한 상황에서의 공통점을 반영한 추상화의 결과물이다. 공통적인 부분은 문맥이 바뀌더라고 변하지 않아야 한다. 다시 말해서 수정할 필요가 없어야 한다. 따라서 추상화 부분은 수정에 대해 닫혀 있다. 추상화를 통해 생략된 부분은 확장의 여지를 남긴다. 이것이 추상화가 개방-폐쇄 원칙을 가능하게 만든 이유다.

추상화를 했다고 해서 모든 수정에 대해 설계가 폐쇄가 되는 것은 아니라는 것이다. 변경에 의한 파급효과를 최대한 피하기 위해서는 변하는 것과 변하지 않는 것이 무엇인지를 이해하고 이를 추상화의 목적으로 삼아야 한다. 추상화가 수정에 대해 닫려 있을 수 있는 이유는 변경되지 않을 부분을 신중하게 결정하고 올바른 추상화를 주의 깊게 선택했기 때문이라는 사실을 기억하라.

Reference

오브젝트, 코드로 이해하는 객체지향 설계

카테고리:

업데이트:

댓글남기기