[Clean Architecture] CH8 OCP(개방-폐쇄 원칙)

less than 1 minute read


OCP(개방-폐쇄 원칙)

  • 소프트웨어 개체(artifact)는 확장에는 열려 있어야 하고, 변경에는 닫혀 있어야 함

사고 실험

  • 아키첵처 기능이 어떻게, 왜, 언제 발생하는지에 따라서 기능을 분리하고, 분리하는 기능을 컴포넌트의 계층구조로 조직화함
  • 이를 통해 저수준 컴포넌트에서 발생한 변경으로부터 고수준 컴포넌트를 보호
    • 구체적으로 저수준 컴포넌트가 고수준에 컴포넌트에 의존(의존성 역전)해야 함

방향성 제어

  • 고수준 컴포넌트를 보호하기 위해서 인터페이스를 활용하여 의존성 역전을 활용해야 함

정보 은닉

  • 방향성 제어 외에도 저수준 컴포넌트가 고수준 컴포넌트의 내부에 대해 너무 많이 알지 못하도록 막을 필요도 존재함
    • 그 이유는 고수준 컴포넌트의 변경으로부터 저수준의 컴포넌트를 보호하려는 경우도 존재하기 때문

결론

  • OCP의 목적인 시스템을 확장하기 쉬운 동시에 변경으로 인해 시스템이 영향 받지 않게 하려면, 시스템을 컴포넌트 단위로 분리하고 의존성 있는 계층 구조를 만들어야 함