본문 바로가기

카테고리 없음

OCP(Open-Closed Principle) 원칙과 전략 패턴Strategy Pattern

반응형

OCP(Open-Closed Principle) 원칙

  • 좋은 객체 지향 설계 원칙 중 하나로 OCP 원칙이라는 것이 있다.
  • Open for extension: 새로운 기능의 추가나 변경 사항이 생겼을 때, 기존 코드는 확장할 수 있어야 한다.
  • Closed for modification: 기존의 코드는 수정되지 않아야 한다.
  • 확장에는 열려있고, 변경에는 닫혀 있다는 뜻인데, 쉽게 이야기해서 기존의 코드 수정 없이 새로운 기능을 추가할 수 있다는 의미다.
  • 확장에 열려있다는 의미: 인터페이스를 구현해서 기능을 추가할 수 있다는 의미이다.
  • 그리고 이 인터페이스를 사용하는 클라이언트 코드도 인터페이스를 통해 새롭게 추가된 기능을 자유롭게 호출할 수 있다. 이것이 확장에 열려있다는 의미이다.
  • 코드 수정은 닫혀 있다는 의미 : 새로운 기능이 추가되기 때문에 기존 코드의 수정은 불가피하다. 당연히 어딘가의 코드는 수정해야한다.
  • 변하지 않는 부분 : 새로운 기능을 추가할 때 가장 영향을 받는곳은 클라이언트인데 클라이언트 코드를 수정하지 않아도 된다. 변하는 부분 : main() 과 같이 새로운 기능을 생성하고 전달해주는 역할은 당연히 코드 수정이 발생한다. 전체 프로그램을 설정하고 조율하는 역할을 하는 부분은 OCP를 지켜도 변경이 필요하다.

전략 패턴 Strategy Pattern

  • 디자인 패턴 중에 가장 중요한 패턴을 하나 뽑으라고 하면 전략 패턴을 뽑을 수 있다.
  • 전략 패턴은 알고리즘을 클라이언트 코드의 변경 없이 쉽게 교체할 수 있다.
  • 인터페이스가 바로 전략을 정의하는 인터페이스가 되고, 각각의 기능이 전략의 구체적인 구현이 된다.
  • 그리고 전략을 클라이언트 코드의 변경 없이 손쉽게 교체할 수 있다.
반응형