전략 패턴 Strategy Patton

상트리버·2022년 12월 23일
0

Java

목록 보기
5/10
post-thumbnail


디자인 패턴

= (소프트웨어) 디자인 + (공통적으로 마주치는 문제를 해결하는 방법) 패턴

전략 패턴

= 객체가 할 수 있는 행위들 각각을 전략으로 만들어 놓고 사용하며,
동적으로 전략 수정이 가능한 패턴

전략 패턴의 의도

  • 동일한 계열의 알고리즘 정의

(Walk, Run, Fly, Rocket)

  • 각 알고리즘 캡슐화
    (Move Strategy)

  • 상호 교환이 가능하도록 만들기


예시

각 알고리즘 캡슐화 Weapon 전략, Armor 전략

  1. 사람을 만들 때 weapon과 Armor를 정해주며 생성

  2. 그 사람이 공격이나 방어를 할 때에 정해진 무기와 갑옷 사용

  3. 상황에 따라서 원하는 무기나 갑옷으로 사용 가능


    새로운 장비나 기능을 추가할 때에는 새로운 캡슐을 만들어 주어서 간단하게 추가하기 가능


도중에 원하는 방식으로 교환도 가능
Human에서 전략 상호 교환이 가능하도록 위 예시처럼 setWeapon을 만들어주어
.setWeapon을 써서 무기 교환 가능


장단점

장점

  • 객체 내부에서 사용되는 알고리즘을 바꿀 수 있다.
  • 알고리즘을 사용하는 코드에서 이를 구현하는 세부 정보를 분리할 수 있다.
  • 상속을 구성으로 대체할 수 있다.
  • 기존 컨텍스트를 변경하지 않고 새로운 전략을 도입함으로써 개방/폐쇄 원칙을 만족

단점

  • 알고리즘이 많지 않고 자주 변경되지 않는다면 새로운 클래스와 인터페이스를 만들어 프로그램을 복잡하게 만들 이유가 없다.
  • 개발자는 적절한 전략을 선택하기 위해 전략 간의 차이점을 알고 있어야 한다.

0개의 댓글