ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Strategy Pattern (C#)
    디자인 패턴 하나씩 2019. 2. 11. 20:34

    . strategy pattern

    https://gmlwjd9405.github.io/2018/07/06/strategy-pattern.html



    행위를 클래스로 캡슐화해 동적으로 행위를 자유롭게 바꿀 수 있게 해주는 패턴



    문제점 

    : 새로운 기능으로 변경하려면 기존 코드의 내용을 수정해야함.

    : 같은 메소드의 내용이 중복된다.





    Character 클래스를 예시로 들어보겠다.

    캐릭터 안에는 다양한 직업들이 존재하는데, 여기서 사용할 첫 주제는 공격이다.

    캐릭터 클래스를 캡슐화하여 동적으로 행위를 자유롭게 바꾸는 것인데.




    SetAttackStrategy - 이것을 따라 원하는 공격을 동적으로 집어넣을 수 있고 또 변화가 가능하다.

    이렇게 되면 캐릭터 클래스를 하나하나 수정하거나 중복되는 일이 줄어들게 된다.



    캐릭터 클래스를 상속받는 두개의 예시를 생성해낸다.



    실행 구문에서 원하는 속성을 부여.

    테스트 동작.





    해결 방법

    - 같은 문제를 해결하는 여러 알고리즘이 클래스별로 캡슐화되어 있고 이들이 필요할 때 교체할 수 있도록 함으로써

    동일한 문제를 다른 알고리즘으로 해결할 수 있게 하는 디자인 패턴


    - 스트래티지 패턴을 이용하면 새로운 기능의 추가가 기존의 코드에 영향을 미치지 못하게 한다.

Designed by Tistory.