개발의 시작과 끝

2020.05.13 / Day - 31 자바 디자인패턴- 스트래티지 패턴 본문

풀스택/자바 공부, 복습

2020.05.13 / Day - 31 자바 디자인패턴- 스트래티지 패턴

개발지혜 2020. 5. 13. 13:08

31일차

 

스트래티지 패턴(Strategy Pattern)

알고리즘군을 정의하고 각각을 캡슐화하여 사용할 수 있도록 만든다.

스트래티지를 활용하면 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경할 수 있다.

>알고리즘군은 어떤 일을 해야 하는지를 정의해 놓은 것. 즉, 연관성 있는 기능들을 모아놓은 그룹을 말함

>각각의 알고리즘즘을 캡슐화를 시킨다. 캡슐화 한다는 것은 클래스로 만들어서 관리한다는 것

>그리고 그 알고리즘을 그룹들 내에서 서로 바꿀 수 있게 한다는 의미

 

* 디자인 원칙

 - 달라지는 부분을 찾아내고 달라지지 않은 부분으로 부터 분리시켜 캡슐화 한다.

 - 상속보다 구성을 활용한다("A는 B이다" 보다는 "A에는 B가 있다"가 나을 수 있음)

 - 구성을 이용하여 시스템을 만들면 유연성을 크게 향상시킬 수 있다.

 - 알고리즘군을 별도의 클래스의 집합으로 캡슐화할 수 있도록 만들어 줄 뿐만 아니라,

   실행시 행동을 바꿀 수 있게 된다.

 

  즉,

 - 메소드를 계속 만들어 행동을 구현할 수 있다.

 - 메소드로 구현하기 보다는 각 행동에 대해서 인터페이스로 표현하고 인터페이스로 구현하는 편이

   여러가지 유연성을 제공할 수 있게 된다.

 - 스트래티지 패턴에서 가장 중요한 것은 실행도중 행동을 바꿀 수 있다는 점이다.

 - 이런 장점 때문에 경우에 따라서 상속보다 구성을 활용하는 것이다.