-
Strategy Pattern (C#)디자인 패턴 하나씩 2019. 2. 11. 20:34
. strategy pattern
https://gmlwjd9405.github.io/2018/07/06/strategy-pattern.html
행위를 클래스로 캡슐화해 동적으로 행위를 자유롭게 바꿀 수 있게 해주는 패턴
문제점
: 새로운 기능으로 변경하려면 기존 코드의 내용을 수정해야함.
: 같은 메소드의 내용이 중복된다.
Character 클래스를 예시로 들어보겠다.
캐릭터 안에는 다양한 직업들이 존재하는데, 여기서 사용할 첫 주제는 공격이다.
캐릭터 클래스를 캡슐화하여 동적으로 행위를 자유롭게 바꾸는 것인데.
SetAttackStrategy - 이것을 따라 원하는 공격을 동적으로 집어넣을 수 있고 또 변화가 가능하다.
이렇게 되면 캐릭터 클래스를 하나하나 수정하거나 중복되는 일이 줄어들게 된다.
캐릭터 클래스를 상속받는 두개의 예시를 생성해낸다.
실행 구문에서 원하는 속성을 부여.
테스트 동작.
해결 방법
- 같은 문제를 해결하는 여러 알고리즘이 클래스별로 캡슐화되어 있고 이들이 필요할 때 교체할 수 있도록 함으로써
동일한 문제를 다른 알고리즘으로 해결할 수 있게 하는 디자인 패턴
- 스트래티지 패턴을 이용하면 새로운 기능의 추가가 기존의 코드에 영향을 미치지 못하게 한다.