OCP : Open Closed Principle
확장에는 열려있어야 하고 , 변경에는 닫혀있어야 한다 → 확장을 할 수 있어야 하지만 , 개체를 변경해서는 안된다.
소프트웨어 아키텍처를 공부하는 가장 근본적인 이유가 바로 행위를 확장할때 개체를 변경하지 않기 위해 공부를 한다.
필자는 재무제표의 클래스 다이어그램을 통해 설명을 하는데 잘 이해하지 못 하겠다 ㅠ 하지만 서로 의존하는 방향이 없으며 확실하게 수준에 의해서 체계화가 되어 있다.
아키텍트는 기능이 어떻게 왜 언제 발생하는지에 따라서 기능을 분리하고 분리한 기능을 컴포넌트의 계층구조로 조직화한다. 컴포넌트 계층구조를 이와 같이 조직화하면 저수준 컴포넌트에서 발생한 변경으로부터 고수준 컴포넌트를 보호할 수 있다.
OCP 는 시스템의 아키텍처를 떠받치는 원동력 중 하나다 . OCP 의 목표는 시스템을 확장하기 쉬운 동시에 변경으로 인해 시스템이 너무 많은 영향을 받지 않도록 하는 데 있다.
이러한 목표를 달성하려면 시스템을 컴포넌트 단위로 분리하고 , 저수준 컴포넌트에서 발생한 변경으로부터 고수준 컴포넌트를 보호할 수 있는 형태의 의존성 계층구조가 만들어지도록 해야 한다.