[Design Pattern] 전략 패턴

이재훈·2023년 8월 23일
1

디자인패턴

목록 보기
3/6

자주 사용되는 디자인 패턴

전략 패턴

축구 게임을 예시로 들도록 하겠습니다. A 공격 패턴과 B 공격 패턴이 있습니다. 상대의 수비 패턴에 따라 효율적인 공격 패턴을 선택하여 공격을 해야 합니다.

이처럼 전략패턴은 이처럼 실행 시점에 사용하는 전략을 선택하여 상황에 맞는 전략이 사용될 수 있도록 만드는 패턴입니다. 물론 if문을 사용하는 것이 아니라 객체지향적인 개념을 활용합니다.

위의 그림처럼 프로젝트에는 Database Repository와 File Repository가 구현되어 있습니다. Spring profile 설정을 통해 어떤 전략을 사용할지 지정할 수 있습니다.

전략 패턴이 적용되면서 생긴 장점 & 보호하고자 하는 것


상황에 따라 런타임에 어떤 동작을 수행 되어야 할지 Repository(interface) 너머로 추상화 되어있기 때문에 Service(Client)는 자신이 주입 받은대로 실행시키기만 하면 됩니다. 만약 Repository가 추가 되더라도 serivce(Client)에는 영향을 주지 않습니다.

이것은 의존 주입 패턴의 장점과 같습니다. Repository의 변경에 Service를 보호하기 위함입니다.

결론

실무에서 많이 활용되는 패턴인 전략패턴을 알아봤습니다. 하나의 인터페이스를 구현한 여러 클래스들을 만든 후 런타임 시점에 어떤 전략을 활용할지 선택할 수 있다는 것은 굉장히 큰 이점을 가져옵니다.

추가적으로 상속은 클래스 간의 강한 의존 관계를 만들기 때문에 가급적 구성을 활용하면 좋습니다.


해당 게시글은 프로그래머스 스쿨 강의
"실무 자바 개발을 위한 OOP와 핵심 디자인 패턴(푸)"
를 정리한 내용입니다. 쉽게 잘 설명해주시니 여러분도 강의를 듣는 것을 추천드립니다.

profile
부족함을 인정하고 노력하자

0개의 댓글