OCP : Open Closed Principle

확장에는 열려있어야 하고 , 변경에는 닫혀있어야 한다 → 확장을 할 수 있어야 하지만 , 개체를 변경해서는 안된다.

아키텍처를 배우는 근본적인 이유

소프트웨어 아키텍처를 공부하는 가장 근본적인 이유가 바로 행위를 확장할때 개체를 변경하지 않기 위해 공부를 한다.

재무재표의 비교

필자는 재무제표의 클래스 다이어그램을 통해 설명을 하는데 잘 이해하지 못 하겠다 ㅠ 하지만 서로 의존하는 방향이 없으며 확실하게 수준에 의해서 체계화가 되어 있다.

기능 분리

아키텍트는 기능이 어떻게 왜 언제 발생하는지에 따라서 기능을 분리하고 분리한 기능을 컴포넌트의 계층구조로 조직화한다. 컴포넌트 계층구조를 이와 같이 조직화하면 저수준 컴포넌트에서 발생한 변경으로부터 고수준 컴포넌트를 보호할 수 있다.

결론

OCP 는 시스템의 아키텍처를 떠받치는 원동력 중 하나다 . OCP 의 목표는 시스템을 확장하기 쉬운 동시에 변경으로 인해 시스템이 너무 많은 영향을 받지 않도록 하는 데 있다.

이러한 목표를 달성하려면 시스템을 컴포넌트 단위로 분리하고 , 저수준 컴포넌트에서 발생한 변경으로부터 고수준 컴포넌트를 보호할 수 있는 형태의 의존성 계층구조가 만들어지도록 해야 한다.