본문 바로가기

자바기초

디자인 패턴 & 스트래티지 패턴

디자인 패턴

특정 문맥에서 공통적으로 발생하는 문제에 대해 재사용 가능한 해결책.

객체 지향 프로그래밍 설계를 할 때 자주 발생하는 문제들을 피하기 위해 사용되는 패턴.

소스나 기계 코드로 바로 전환될수 있는 완성된 디자인은 아니며, 다른 상황에 맞게 사용될 수 있는 문제들을 해결하는데에 쓰이는 서술이나 템플릿.

프로그래머가 어플리케이션이나 시스템을 디자인할 때 공통된 문제들을 해결하는데에 쓰이는 형식화 된 가장 좋은 관행이나, 이를 맹신하여 굳이 필요가 없을 것 같은 부분까지 디자인 패턴을 쓰는 것은 좋지 않다.

 

 

 

전략 패턴 (Strategy Pattern)

실행 중에 알고리즘을 선택할 수 있게 하는 행위 소프트웨어 디자인 패턴

특정한 계열의 알고리즘들을 정의하고, 각 알고리즘을 캡슐화하며, 이 알고리즘들을 해당 계열 안에서 상호 교체가 가능하게 만든다.

즉, 객체가 할 수 있는 행위들 각각을 전략으로 만들어 놓고, 동적으로 행위의 수정이 필요한 경우 전략을 바꾸는 것만으로 행위의 수정이 가능하도록 만든 패턴이다.

 

전략 패턴을 사용하는 이유

: 행위를 수정하기 위해 기존의 메서드를 수정하면 이는 SOLID 원칙 중 OCP(Open-Closed Principle)에 위배.

 또한 시스템 확장시 유지 보수가 어려워짐.

 

 

전략 패턴의 예시를 잘 이해가게 작성한 블로그 : https://victorydntmd.tistory.com/292