소프트웨어의 구성 요소(컴포넌트, 클래스, 모듈, 함수)는 확장에 개방되어야 하지만 변경에는 폐쇄되어야 한다. 즉, 기존 코드를 변경하지 않으면서 기능을 추가할 수 있도록 설계되어야 한다.
전략 패턴을 이용하는 역할 수행 필요에 따라 동적으로 구체적인 전략을 바꿀 수 있다. (의존성 주입)
인터페이스나 추상 클래스를 활용해 외부에서 동일한 방식으로 기능을 호출하는 방법을 명시
전략 패턴에서 명시한 기능을 실제로 구현할 클래스