공부/디자인패턴

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

choryDev 2018. 10. 26. 01:55


스트래티지 패턴이란 


전략 패턴(strategy pattern) 또는 정책 패턴(policy pattern)은 실행 중에 알고리즘을 선택할 수 있게 하는 행위 소프트웨어 디자인 패턴이다. 전략 패턴은

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

전략은 알고리즘을 사용하는 클라이언트와는 독립적으로 다양하게 만든다.[1] 전략은 유연하고 재사용 가능한 객체 지향 소프트웨어를 어떻게 설계하는지 기술하기 위해 디자인 패턴의 개념을 보급시킨 디자인 패턴(Gamma 등)이라는 영향력 있는 책에 포함된 패턴들 가운데 하나이다.

-출처 위키백과-


쉽게 말하자면 클라이언트와 분리 시켰으며 캡슐화 시켜 서브클래스를 이용하여 유연성을 극대화시켰습니다.


예시                         

                       



예시)신작게임에서 케릭터의 무기를 구현해보세요

*무기는 세가지 종류가 있습니다.

*칼

*검

*도끼


GameCharacter 클래스 부분이 클라이언트 부분이며 


Weapon 인터페이스의 밑에 Knife,Ax,Sword 서브 클래스들은 캡슐화 되어 있습니다.


3가지 서브 클래스들은 Weapon 이라는 접근점으로 작동합니다. 그리고 Weapon의 attack을 받고 있습니다.


서브 클래스를 변경하여 메인클래스를 건드리지 않고 내용을 변경할수 있습니다, 상황에 맞게 호출하면 편리하게 할수 

있습니다.

만약에 응용 하자면 



이런식으로 인터페이스를 이용하여 접근점을 만들어 수정하면 긴 코드라도 쉽게 볼수있습니다.


참고 : https://www.youtube.com/watch?v=UEjsbd3IZvA 

좋은 영상 보여주신 이야기's G 감사합니다.


혹시나 잘못알고 있는 부분이나 수정할 부분 남겨주시면 감사합니다~^^