The Open - Closed Principle - 확장에 대해서는 열고, 수정에 대해서는 닫는다

The Open - Closed Principle - 확장에 대해서는 열고, 수정에 대해서는 닫는다


The Open - Closed Principle(OCP) 이라는 원칙에 대한 설명
이 원칙은 Bertrand Meyer가 제시한 것으로 Robert C. Martin이 C++ Report에 쓴 Enginneering Notebook이라는 컬럼에 정리되어 있는글입니다

이원칙은 클래스 등이
~ 확장(Extension)에 대해서는 열러(Open)있지만
~ 수정(Modification)에 대해서는 닫혀(closed)있어야 한다
고 주장하고 있습니다

클래스를 설계할 때 특별한 이유가 없는 한 확장을 허용해야 합니다. 이유없이 확장을 금지해서는 안되며,
이것이 ‘확장에 대해서는 열려있다’ 라는 의미입니다.

그러나 확장을 할때마다 기존의 클래스를 수정해야 하는 것도 곤란합니다.
확장을 해도 기존의 클래스는 수정할 필요가 없는것이 ‘수정에 대해서는 닫혀있다.’
라는 의미입니다.

확장은 대 환영이지만 기존의 클래스를 수정해서는 안됩니다.
기존의 클래스를 수정하지 않고 확장할수 있도록 하는 것이 The Open - Closed Principle의 원칙입니다.

클래스에 대한 요구는 빈번하게 변화합니다. 그리고 그 요구는 대부분
‘기능으을 확장하고 싶은’ 경우이므로 클래스가 기능 확장을 할수 없다면 곤란합니다.

그러나 한편으로는 이미 완성되어 테스트까지 마친 클래스를 수정한다면 소프트웨어의 품질을 떨어뜨릴
위험이 있습니다.

확장에 대해서는 열려있고 수정에 대해서는 닫혀있는 클래스가 부품으로써 재이용 가치가 높은 클래스 입니다.
그리고 오브젝트(객체)지향의 목적이란 바로 이러한 클래스를 만들수 있는 구조를 제공하는 것 입니다.

Share