이 패턴은 생성(Creational), 구조(Structural), 행위(Behavioral) 패턴으로 나눌 수 있는 디자인 패턴 중 행위 패턴에 속합니다. 

포스팅 이유

무엇인가 이해하려 할 때, 다른 관점에서 이해 한것이 도움이 될 수 있습니다. 이해를 기록해 두기 위해 남깁니다.

관련 링크

사례

이 패턴을 처음 알게 된건, 대전 액션 게임 서버 개발 중 여러 종류의 경기 종료 규칙을 적용하기 위해 선임 개발자가 사용 한 것을 보고 알게 되었습니다. 그리고 캐릭터가 사용하는 총의 발사 규칙(연사, 점사, 일점사)을 적용할 때도 썼었네요. 그 밖에도 에디터에서 라인 구분 방법 분기, 컴파일에서 기계별 레지스터 할당 방법 분기, 수학에서는 계산 방법 분기, 웹싸이트에서는 가입 절차에 따른 회원 검증 방법 분기 등이 있다고 하네요.

사용 이유

객체가 하는 일은 변하지 않는데, 일을 처리 방법이 달라질 때, 상속이나 조건문으로 구현하기에 일 처리 방법 및 분기의 코드(변수, 로직 등) 관리 자리가 부담스러워 독립된 자리에서 일을 처리하고 싶을 때 사용 합니다.

스트래티지 패턴(Strategy Pattern) 구현 알고리즘

  1. 구현(알고리즘)을 클래스(또는 클로저, 함수자 등)로 독립 시킨다.
  2. 독립된 구현에 공통 인터페이스(함수로 호출 부분)를 붙인다.
  3. 구현 사용 객체는 독립시킨 구현과 has-a 관계로 묶는다.

구현 방법

링크를 참조 하세요. 워낙 많아 따로 정리할 필요가 없겠네요.

:wq!


저작자 표시
신고
posted by 농사를 짓는 게임 프로그래머 최익필

댓글을 달아 주세요