Strategy 패턴은
문제 해결하는 데 있어 다양한 알고리즘이 적용될 수 있는 경우에 알고리즘을 별도로 분리하는 패턴이라고 한다.
특정 객체에 종속되지 않으며 알고리즘에 대한 확장과 변경이 용이해진다고 한다.
SumPrinter는 출력을 하는데,
SumStrategy가 반환하는 합계 값을 출력한다.
실제 동작에 대해서는 SimpleSumStrategy와 GaussSumStrategy에서 구현한다.
이 구조를 통해 필요에 따라 일련의 동작 중에서 다른 알고리즘을 적용하여 동작할 수 있다고한다.
추후에 SumStrategy를 통해서 새로운 알고리즘을 구현해도,
SumPrinter는 실제 알고리즘에 대한 정보를 가지고 있지 않기 때문에
SumPrinter의 사용방식이 바뀌지 않게 되는 장점이 있다고 한다.
먼저 Sumprinter 클래스를 구현한다.
SumStrategy 타입의 객체(실제 알고리즘을 구현한 클래스의 객체)를 하나 받고,
1에서 N까지의 합을 구하기 위한 N 값을 받는다.
SumStrategy는 1부터 N까지의 합을 구하는 메소드를 가진 인터페이스이다.
SimpleSumStrategy는 SumStrategy를 상속 받아 get 메소드를 구현한다.
GaussSumStrategy도 동일하게 SumStrategy를 상속 받아 get 메소드를 구현한다.
메인 메소드에서는
SumPrinter 인스턴스를 생성하고,
print 메소드를 이용하여 두가지 알고리즘을 한 가지 사용 방법으로 사용하고 있다.
이처럼 하나의 기능에 대해서 서로 다른 방식의 구현을 실행 중에 변경할 수 있다.
이 글은
https://www.youtube.com/watch?v=Wao5HiXM_Cg&list=PLe6NQuuFBu7FhPfxkjDd2cWnTy2y_w_jZ&index=3
위 유튜브 영상 강의를 보고 작성했습니다.
'Design Pattern' 카테고리의 다른 글
디자인 패턴 - 구조(Structural)패턴 - Adaptor (2) | 2024.10.10 |
---|---|
디자인 패턴 - 행위(Behavioral)패턴 - Template (0) | 2024.10.10 |
디자인 패턴 - 행위(Behavioral)패턴 - Iterator (2) | 2024.10.10 |